java - 将字符串转换为纪元

标签 java datetime java-8

我有一个字符串 - 20180915,格式为 yyyyMMdd 我需要得到这个日期的纪元毫秒数,20180915 的答案应该是 1537012800000

我能够使用以下函数做到这一点 -

import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
public static void main(String args[]) throws ParseException {

        String myDate = "2018-09-15 12:00:00";
        LocalDateTime localDateTime = LocalDateTime.parse(myDate,
                DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") );
        System.out.println(localDateTime);
        long millis = localDateTime
                .atZone(ZoneOffset.UTC)
                .toInstant().toEpochMilli();
        System.out.println(millis);
    }

我面临的问题是—— 我将字符串作为“2018-09-15 12:00:00”传递,但我的输入是“20180915”。 我找不到将“20180915”转换为“2018-09-15 12:00:00”的好方法 我怎样才能做到这一点?

最佳答案

回答-

private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");

public static Long getMillisForDate(String date) {
    return LocalDateTime
            .of(LocalDate.parse(date, formatter), LocalTime.NOON)
            .atZone(ZoneOffset.UTC)
            .toInstant().toEpochMilli();
}

关于java - 将字符串转换为纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52597426/

相关文章:

java - 谓词与 if 语句

java - 在 Java/Mockito 的最终类中模拟静态方法

java - 有没有办法将 ExpandableListView 嵌套在relativelayout 中?

python - Pandas 将年份列转换为日期列

c# - 在 C# 中对 DataTable/DataView 中的 DATE 列进行排序时出现问题

HashMap 上的 Java 8 Map Reduce 作为 lambda

Java 8 toMap IllegalStateException 重复键

java - Selenium/Java/Junit - 获取运行测试时使用的驱动程序/浏览器

java - 无法离开加入第二张 table

R-绘制重叠的时间间隔