如果我根据格林威治标准时间设置应用程序内警报,那么我如何能够在android中根据各种时区自动触发它
Posted
技术标签:
【中文标题】如果我根据格林威治标准时间设置应用程序内警报,那么我如何能够在android中根据各种时区自动触发它【英文标题】:If I set an in-app alarm according to GMT time then how am I am able to trigger it according to various timezones automatically in android 【发布时间】:2017-09-27 02:25:24 【问题描述】:Calendar calendar = Calendar.getInstance(TimeZone
.getTimeZone("GMT"));
这就是我将时区设置为 GMT 以达到闹钟目的并根据 GMT 设置闹钟的方式。现在在android中是否有任何自动配置方式可以根据其时区设置闹钟时间?如果没有为此目的的自动配置,那么任何人都可以建议我任何想法吗?
【问题讨论】:
【参考方案1】:请阅读the dst/tz best practices和the timezone tag wiki。
特别是,您不应在 GMT 之前安排未来的事件(例如闹钟)。您应该根据本地时间设置闹钟 - 可以针对特定时区,也可以针对任何系统时区。
通常在移动设备上,您不会将警报绑定到系统本地时区以外的任何内容。例如,如果用户的手机将每日闹钟设置为每天早上 8:00,那么即使用户带着手机前往不同的时区,闹钟仍然会在早上 8:00 响起——即使尽管这与 GMT/UTC 的原定时间不同。这就是所有现代智能手机的工作原理。
任何告诉您“始终使用 UTC/GMT”的人都没有考虑过调度。
【讨论】:
但是想象一个场景,根据我的时区,事件在上午 8:00 开始,但它会在不同时区的不同时间开始。现在我根据我的时区在我的应用程序中设置闹钟或通知,它会自动调整到不同的时区吗?要在不同的时区进行自我调整,必须自动更改闹钟时间,因为例如上午 8:00 可能相当于那个时间的晚上 11:00。想想看电视节目。 对于特定地点的特定事件,您将跟踪当地时间、时区以及任何适用的重复规则。例如,08:00
、America/Los_Angeles
、Daily
。有时会是16:00 UTC
,有时会是15:00 UTC
,具体取决于DST 在美国太平洋时间是否有效。在另一个时区,这甚至可以转换为 3 个不同的本地时间(取决于 那个 时区的 DST)。但是 - 对于设备本地的闹钟(例如手机上的闹钟应用),根本不应该记录时区。以上是关于如果我根据格林威治标准时间设置应用程序内警报,那么我如何能够在android中根据各种时区自动触发它的主要内容,如果未能解决你的问题,请参考以下文章