如何将2016-4-10 00:00:00等字符串数据转换为时间戳?

时间:2016-05-11 07:41:03

标签: android date datetime

我希望将 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之后)

所以你可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

尝试使用一个M来解析单位数月份格式。它也正确处理两位数......

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd kk:mm:ss.SSS");

答案 1 :(得分:1)

您的代码没有问题。时区存在一些问题。您的SimpleDateFormat将使用您当地的时区。您可能正在获取您的语言环境的时间戳,并在将其转换回日期时,您正在检查GMT时区。要测试这个,只需添加

sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

在解析日期之前

所以基本上你没有使用相同的时区将日期转换为时间戳,并将时间戳转换为区域。