javawhy系统。currentTimeMillis()是否生成不正确的长值?
我知道,它被讨论了太多次,但我不明白为什么我的毫秒会产生:
System.currentTimeMillis();
或通过:
Calendar.getInstance(TimeZone.getTimeZone("UTC")).getTimeInMillis()
与我在www.epochconverter.com上看到的不相等吗
我需要的只是生成一个具体格式的String
,但是我发现毫秒是不对的
以防万一,我是这样做的:
private static final String DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
public static String getCurrentTimestamp() {
long time = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
String lastModifiedTime = sdf.format(time);
Logger.logVerbose(TAG, "Generated timestamp is " + lastModifiedTime);
return lastModifiedTime;
}
我最终得到的只是一个本地时间,但我需要的唯一时间是纯UTC,不与我的时区连接
我甚至用SQLite(使用SELECT strftime('%s',timestring);
)检查了它,得到了正确的毫秒。那么为什么我在上面发布的两条声明中错误地生成了它呢?先谢谢你
# 1 楼答案
三件事情要考虑
但更重要的是,如果不设置tiemzone,它将使用默认时区
相反,您应该添加
将
'Z'
添加到格式只会更改时区,只会将'T'
添加到格式,这只是您添加的一个字母# 2 楼答案
如果希望使用日期格式设置UTC区域中的时间格式,请使用