android - 如何获取夏令时的开始和结束日期?

标签 android

我正在尝试获取 Android 中夏令时的转换日期。这是特定时区夏令时开始和结束的日期。

我该怎么做?

最佳答案

没有办法直接这样做,但您可以使用 TimeZone.isDaylightTime(Date),如下所示:

TimeZone tz = TimeZone.getTimeZone ("America/Denver") ;
Date date = new GregorianCalendar (2010, 10, 15).getTime () ;
if (tz.isDaylightTime (date)) {
// dst in effect code
   }
else {
// dst not in effect code
   }

当然,要获得开始日期(如果这确实是您所需要的),您需要遍历给定年份的所有日期并检查每一天……这将是非常低效的。另外,正如上面的答案所述,据我所知,夏令时信息被编译到 java.util 库中,因此如果给定的市政当局更改了关于夏令时开始/结束时间的法律,您将得到不正确的结果。

此外,Android 中的 java.util.TimeZone 实现似乎已损坏(至少在 2.2 中)。例如

TimeZone denver = TimeZone.getTimeZone ("America/Denver") ;
TimeZone phoenix = TimeZone.getTimeZone ("America/Phoenix") ;

== 真;//这是不应该的

在 Eclipse 的模拟下运行,denver.hasSameRules (phoenix) 返回 true,它应该返回 false:两者都是 GMT-7:00,但 Phoenix 不使用夏令时。我无权访问任何 Android 设备来测试这是否只是模拟器的问题。实际上,我开始在这个文件中搜索这个 denver == phoenix 问题的答案,然后看到你的帖子,所以我想我会回答。

关于android - 如何获取夏令时的开始和结束日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3159023/

相关文章:

javascript - 检测当前是否在 Android 上滚动网页

java - Android sqlite 保持连接打开

Android : OpenGL 2. 0 使用 Matrix.setLookAtM 旋转/移动相机

android - 当应用程序处于 "pending publication"阶段并被评论者/测试者(Google Play 商店)使用/评论时,InstallerPackageName 是什么?

java - 通过 Activity 快捷方式启动时,如何在字段中设置数据库中的特定数据?

java - 从 Android 手机获取可靠的 MSISDN?语音信箱号码 Line1Number

android - 没有名称的 GSON 序列化普通数组

java - Android Studio onClick 设置文本问题

Android Room Kotlin 内部连接

android - 适用于 Wordpress、IOS 和 Android 的 SSL 证书