iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >android 获取手机当前时区,解决时间偏移量和夏令时差问题
  • 343
分享到

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

androidjava开发语言 2023-09-29 17:09:52 343人浏览 安东尼
摘要

 //获取当前时区     public static int getTimeZone() {         Date date=new Date();         //取得本地时间         Calendar cal =

 //获取当前时区
    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}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);}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;}public static String DateToString(Date date, String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(date);}}

来源地址:https://blog.csdn.net/weixin_43824829/article/details/130626896

--结束END--

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

本文链接: https://www.lsjlt.com/news/421548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作