android - 如何转换字符串数据如 2016-4-10 00 :00:00 to timestamp?

标签 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 之后)

所以你能帮我吗?

最佳答案

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

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

在解析日期之前。

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

关于android - 如何转换字符串数据如 2016-4-10 00 :00:00 to timestamp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37156117/

相关文章:

java - 我的后端 API 名称是什么?它在哪里?从 Android Studio 客户端调用 Google Cloud 端点后端 API

java - 日期格式映射到 JSON Jackson

r - 仅在 R 中将日期/时间转换为日期

date - ISO 8601 的月日部分是 --MM-DD 格式吗?

mysql - NOW() + INTERVAL 2 DAY 存储错误的日期

android - 如何在我通话时播放音频,可以让另一个叫我的人听到....?

java - Smack + openfire - 是否可以检查当前用户是否是管理员?/如何检查当前用户详细信息?

android - Activity 生命周期和类属性

java - Kotlin 无法解析的日期 - ParseException 错误

javascript - JQuery 日期时间的 onchange