如何在android中处理时区和夏令时?

Posted

技术标签:

【中文标题】如何在android中处理时区和夏令时?【英文标题】:How to handle Time Zone and Day Light Saving in android? 【发布时间】:2013-06-08 09:29:20 【问题描述】:

我正在编写这个需要在 android 中处理 DST 的应用程序。我编写了一个小的测试代码,可以执行以下操作。此外,在这种情况下,我没有使用网络提供的日期时间。

如果我运行应用程序并显示当前时间并转到 android 设置并更改时区而不退出应用程序然后从应用程序获取当前时间它不会给我新的时间更改。

更新以下是代码

btnStart.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                // TODO Auto-generated method stub
                Date dt = new Date(System.currentTimeMillis());
                txtViewStart.setText(sdf.format(dt));
            
        );

        btnEnd.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 
                // TODO Auto-generated method stub

                Date dt = new Date(System.currentTimeMillis());
                txtViewEnd.setText(sdf.format(dt));

            
        );

我该如何处理这个问题以及在夏令时的情况下

【问题讨论】:

处理时间变化的代码是否在您的 onCreate() 或 onResume() 方法中?另外,您可以发布上述代码吗? 我写的只是在onCreate()中返回当前日期时间的代码。我将更新问题中的代码 参考:***.com/questions/36253913/… 【参考方案1】:
        TimeZone timezone = TimeZone.getTimeZone(selectManulTimeZoneString);
    OR
    TimeZone timezone = TimeZone.getDefault();
String TimeZoneName = timezone.getDisplayName();
int TimeZoneOffset = timezone.getRawOffset() / (60 * 60 * 1000);
double hoursDiff = timezone.getDSTSavings() / (60 * 60 * 1000);
Log.i("AM","DayLightSaving:" + hoursDiff);

【讨论】:

以上是关于如何在android中处理时区和夏令时?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中找到给定日期和时区的夏令时调整?

如何在android中检测夏令时转换

如何确定给定日期是不是在 .NET 2.0 中给定时区的夏令时?

如何为 cron 触发器处理石英夏令时的用户时区?

PHP 处理夏令时的时区

带有时区和夏令时的纪元的日期和时间(以秒为单位)