java - 如何将(UTC 中的字符串)日期转换为毫秒而不影响其在 Java 中的时区

标签 java datetime

考虑以下字符串是 UTC 时间,我希望使用 java 以毫秒为单位的等效时间。

String flcDate = "2018-09-07 05:45:00.0";
String geofenceDate = "2018-07-27 08:42:20";

我正在尝试下面的代码,但它会根据我所在的时区更改毫秒数。

public static long stringToMilliSeconds(String string) throws ParseException {

          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
          Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
          TimeZone fromTimeZone = calendar.getTimeZone();
          TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
          calendar.setTimeZone(fromTimeZone);

          calendar.setTime(sdf.parse(string));
          System.out.println(calendar.getTime().toString());


          return calendar.getTime().getTime();
    }

最佳答案

这使用本地日期时间和即时转换字符串。

return LocalDateTime.parse("2018-09-07 05:45:00.0", 
                           DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"))
     .toInstant(ZoneOffset.UTC)
     .toEpochMilli(); //1536299100000

生成的 long 表示输入日期/时间(UTC 时间)的 Epoch 毫秒数:

Instant.ofEpochMilli(1536299100000L)  ==> 2018-09-07T05:45:00Z

对于第二个字符串,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") 可以用作格式化程序。

关于java - 如何将(UTC 中的字符串)日期转换为毫秒而不影响其在 Java 中的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52251795/

相关文章:

c# - DateTime.Now 占 DST

php - 获取从现在到 x 天后的所有日期

python - 在一周的不同时间打印

java - 如何让下载文件时保留页面而不重定向?

java - 将后端代码(Java、Python)与 HTML 集成

Java 从 Appengine 托管虚拟机连接到 Cloud SQL 第二代

java - 将 com.itextpdf.text.Image 保存为图像文件

python - Pandas 日期时间 : Calculate Number of Weeks Between Dates in Two Columns

java - 我需要将字符串格式的日期转换为实际日期以检查它是否是星期五

java - 使 jar 文件首先运行特定文件