我想把像2016-4-10 00:00:00这样的数据转换成时间戳。
我使用以下代码(我将此日期作为参数发送到此方法):
public static long parseUTimeAndGiveTimestamp(String time) {
if (time != null && !time.equals("")) {
long longTime = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");
Date date;
try {
time += ".000";
date = sdf.parse(time);
} catch (Exception e) {
e.printStackTrace();
return longTime;
}
longTime = date.getTime();
return longTime / 1000;
}
return 0;
}但是我得到了1460235600值,如果我再一次转换它,我得到:Sat,2016年4月9日21:00:00
(在10.04之前-09.04之后)
这样你就能帮我?
发布于 2016-05-11 09:53:34
您的代码没有问题。时区有一些问题。您的SimpleDateFormat将使用本地时区。您可能正在为您的地区获得时间戳,并且在将其转换回日期时,您将签入GMT时区。要测试这一点,只需添加
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
在解析日期之前。
因此,基本上您没有使用相同的时区将日期转换为时间戳,同时将时间戳转换为区域。
发布于 2016-05-11 07:48:08
尝试使用一个M来解析个位数的月份格式。它也能正确地处理两位数.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd kk:mm:ss.SSS");https://stackoverflow.com/questions/37156117
复制相似问题