我知道,讨论的次数太多了,但我无法理解为什么我的生成毫秒:
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);
)并获得正确毫秒。为什么我上面发布的这两个语句错误地生成了它?非常感谢。
答案 0 :(得分:1)
要考虑的三件事
但更重要的是,如果你没有设置tiemzone,它将使用默认时区。
SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
// no time zone set so the default is used.
String lastModifiedTime = sdf.format(time);
相反,你应该添加
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
在格式中添加'Z'
会将时区更改为仅添加'T'
格式,这只是您添加的一封信。
答案 1 :(得分:0)
如果您希望日期格式格式化UTC区域中的时间,请使用
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));