我希望将 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 值,如果我再次将其转换为日期,我会得到: 周六,2016年4月9日21:00:00
( 10 .04之前 - 09 .04之后)
所以你可以帮帮我吗?
答案 0 :(得分:1)
尝试使用一个M
来解析单位数月份格式。它也正确处理两位数......
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd kk:mm:ss.SSS");
答案 1 :(得分:1)
您的代码没有问题。时区存在一些问题。您的SimpleDateFormat将使用您当地的时区。您可能正在获取您的语言环境的时间戳,并在将其转换回日期时,您正在检查GMT时区。要测试这个,只需添加
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
。
所以基本上你没有使用相同的时区将日期转换为时间戳,并将时间戳转换为区域。