android 获取手机当前时区,解决时间偏移量和夏令时差问题

news/2024/11/30 1:41:54/

 //获取当前时区
    public static int getTimeZone() {
        Date date=new Date();
        //取得本地时间
        Calendar cal = Calendar.getInstance();
        //取得时间偏移量
        int offset = cal.get(Calendar.ZONE_OFFSET)/(1000*60*60);
        //取得夏令时差
        int dstOffset=cal.get(Calendar.DST_OFFSET)/(1000*60*60);
        //从本地时间里扣除这些变量,即可以取得UTC时间
        cal.add(Calendar.MILLISECOND, -(offset+dstOffset));
        cal.add(Calendar.HOUR, -(offset + dstOffset));
        Long timeStampUTC = cal.getTimeInMillis();
        Long timeStamp = date.getTime();
        Long timeZone = (timeStamp - timeStampUTC) / (1000 * 3600);

        return timeZone.intValue();
    }

 世界时区转换的Demo


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;import android.app.Activity;
import android.os.Bundle;
import android.util.Log;import com.su.test.R;public class MainActivity extends Activity {/*** 测试时请手动切换手机的时差设置*/@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initViews();initListeners();initValues();}private void initViews() {// TODO Auto-generated method stub// 例如:北京时间:2014-11-28 11:12:45 转化美国洛杉矶应为 2014-11-27 19:12:45Log.d("test", "北京时间转化美国洛杉矶时间:" + getZoneTime("2014-11-28 11:12:45", "yyyy-MM-dd HH:mm:ss"));//测试结果 D/test(23630): 北京时间转化美国洛杉矶时间:2014-11-27 19:12:45  与预期一致// 例如:北京时间:2014-11-28 11:13:42 转化英国伦敦应为 2014-11-28 03:13:42Log.d("test", "北京时间转化英国伦敦时间:" + getZoneTime("2014-11-28 11:13:42", "yyyy-MM-dd HH:mm:ss"));//测试结果 D/test(24005): 北京时间转化英国伦敦时间:2014-11-28 03:13:42  与预期一致// 例如:北京时间:2014-11-28 11:14:00 转化华宝客户-肯尼亚时间应为 2014-11-28 06:13:59Log.d("test", "北京时间转化肯尼亚(内罗毕)时间:" + getZoneTime("2014-11-28 11:14:00", "yyyy-MM-dd HH:mm:ss"));//测试结果 D/test(24553): 北京时间转化肯尼亚(内罗毕)时间:2014-11-28 06:14:00 与预期一致// 结论: getZoneTime(String strDate, String formatStr) 没问题}private void initListeners() {// TODO Auto-generated method stub}private void initValues() {// TODO Auto-generated method stub}/*** 把北京时间转换成当前时区上的时间* * @param strDate* @param formatStr* @return*/public static String getZoneTime(String strDate, String formatStr) {long defZone = 8 * 60 * 60 * 1000;Date date = StringToDate(strDate, formatStr);TimeZone zone = TimeZone.getDefault();return DateToString(new Date(date.getTime() - defZone + zone.getRawOffset()), formatStr);}/*** 字符串转日期* * @param dateStr* @param formatStr格式*            (如:yyyy-MM-dd HH:mm:ss)* @return*/public static Date StringToDate(String dateStr, String formatStr) {DateFormat dd = new SimpleDateFormat(formatStr);Date date = null;try {date = dd.parse(dateStr);} catch (java.text.ParseException e) {e.printStackTrace();}return date;}/*** 日期转获取字符串* * @param date日期* @param format格式*            (如:yyyy-MM-dd HH:mm:ss)* * @return*/public static String DateToString(Date date, String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(date);}}


http://www.ppmy.cn/news/64381.html

相关文章

JAVA-多态

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 1.多态的概念 2.多态的实现条件 3.重写 总结 1.多态的概念 什么是多态? 通俗来说,就是多种形态,具体点就是去完成某个…

Python使用HTTP隧道

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言&#xf…

【CSS3】CSS3 属性选择器 ( CSS3 简介 | 属性选择器 | 属性选择器权重 )

文章目录 一、CSS3 简介二、CSS3 属性选择器权重三、CSS3 属性选择器 一、CSS3 简介 CSS3 是在 CSS2 基础上进行扩展后的样式 ; 在 移动端 对 CSS3 的支持 要比 PC 端支持的更好 , 建议在移动端开发时 , 多使用 CSS3 ; PC 端老版本浏览器不支持 CSS3 , 尤其是 IE 9 及以下的版…

大项目环境配置

目录 Linux的龙蜥8是什么? OpenGL是什么? 能讲讲qt是什么吗? 我可以把qt技术理解为c工程师的前端开发手段吗? 我其实一直有些不懂大家所说的这个开发框架啥的,这个该如何理解呢 那现在在我看来,框架意…

启动Rabbit时出现Plugin configuration unchanged无法启动问题

文章目录 问题描述问题解决新问题 问题描述 在安装好Erlang和RabbitMQ并配置好环境变量后, 运行rabbitmq-plugins enable rabbitmq_management 命令, 出现如下问题 在启动Rabbit时出现以下内容 The folwing plugins have been configured: rabbitmq_management rabbitmq_mana…

自动控制原理笔记-频率响应法-稳定裕度

目录 一、增益裕度h(幅值裕度, gain margin) 二、相角裕度g (phase margin) 三、根据Bode图确定稳定裕度 相角裕度 一、增益裕度h(幅值裕度, gain margin) 开环幅相特性曲线(奈氏曲线)G(jw)与负实轴…

JavaScript实现输入长方形的宽和高,输出周长和面积的代码

以下为实现输入长方形的宽和高,输出周长和面积的代码和运行截图 目录 前言 一、实现输入长方形的宽和高,输出周长和面积 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 输入数值不是要求必须输入数值的代码 1.5 运行截图 前言 1.若…

提示工程L3:内容总结

提示工程指南:文本总结 当今世界有如此多的文本信息,阅读需要花费大量的时间,但是如果可以对文本的内容进行压缩,去掉冗余的内容保留你感兴趣的重点信息,这样就能节省不少时间,同时还提高了我们的阅读效率。…