Android是否假设我想向用户显示的任何时间戳都是UTC,并且它会在手机本地时区为我显示



只是想确认我应该如何向用户显示时间戳。我们将系统时间戳存储在UTC中,例如提交的日期、时间戳以及某些操作或事件发生的时间等。

我现在正在做一些测试。我做了一个查询,并将UTC时间戳列表作为字符串返回,然后我想将其转换为日历表单

someTimeStamp = Calendar.getInstance();
long l = Long.valueOf(stringTimeStampFromDBViaJson);
someTimeStamp.setTimeInMillis(l);

例如,我从数据库中以UTC格式返回的值是

2012-09-18 19:36:23.950
2012-09-18 19:31:55.193

所以我的手机在美国东部时间,显示为下面的直接

18 September, 2012 03:36:23 PM
18 September, 2012 03:31:55 PM

这就是我想要的。我只是想知道这是否是我可以信赖的行为。

除非另有明确定义,否则所有Java标记都表示自Unix纪元(1970年1月1日)以来的UTC时间和日期。如果您使用系统调用(即Android/Googlelibraryneneneba API调用),那么您需要知道这些调用是本地的还是UTC的,但通常很容易从API原型中判断出来,而且根据我的经验,这些调用是"充分"记录的。

我现在正在做一个项目,该项目必须混合UTC、GMT和本地,我所有的邮票都在内部显示为UTC毫秒,自纪元以来。只有当我向用户显示时,我才会考虑时区。我专门使用Calendar类来表示DTG和进行计算,并发现它既准确又可靠。

我还有一个助手类,它包含等方法

long startOfDayUsingPrefs(long millis) 

long startOfDay(long millis).  

前者根据用户设置的首选项(使用本地时区或UTC)返回自今天午夜UTC或当地时间以来的第一个刻度的时间戳。后者总是UTC。

希望这能有所帮助。。

相关内容

  • 没有找到相关文章

最新更新