首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleDateFormat到java.time

SimpleDateFormat到java.time
EN

Stack Overflow用户
提问于 2017-02-23 20:50:12
回答 2查看 798关注 0票数 3

我试图了解Java 8日期/时间框架是如何工作的。

实际上,我使用SimpleDateFormat这种方式返回给定字符串的毫秒:

代码语言:javascript
复制
new SimpleDateFormat("yyyyMMddHHmmssSSS").parse(builder.toString()).getTime();

Java 8中的新类会变成什么样子?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-24 08:19:46

您指定的模式无法在Java-8中工作。问题是似乎没有后台的用Java-9修正,但是Java-9还没有发布。

Java-8可能的解决方案要么包括笨拙的字符串预处理,即在分数部分之前插入小数分隔符,要么下载其他第三方库(根据我的观察,解析器可能仍然比Java-9中的要快):

字符串预处理

代码语言:javascript
复制
String mydate = "20130812214600025";
String adjustedInput = new StringBuilder(mydate).insert(14, '.').toString();
ZonedDateTime date =
    ZonedDateTime.parse(
        adjustedInput,
        DateTimeFormatter.ofPattern("yyyyMMddHHmmss.SSS").withZone(ZoneOffset.systemDefault()));
System.out.println(date); // 2013-08-12T21:46:00.025+02:00[Europe/Berlin]
System.out.println(date.toInstant().toEpochMilli()); // 1376336760025

Joda-Time

代码语言:javascript
复制
String mydate = "20130812214600025";
DateTime date =
    DateTime.parse(
        mydate,
        DateTimeFormat.forPattern("yyyyMMddHHmmssSSS"));
System.out.println(date); // 2013-08-12T21:46:00.025+02:00
System.out.println(date.toInstant().getMillis()); // 1376336760025

我的图书馆 Time4J

代码语言:javascript
复制
long millisSinceUnix =
    ChronoFormatter.ofPattern(
        "yyyyMMddHHmmssSSS",
        PatternType.CLDR,
        Locale.ROOT,
        Moment.axis(TemporalType.MILLIS_SINCE_UNIX)
    ).with(Timezone.ofSystem()).parse(mydate).longValue();
System.out.println(millisSinceUnix); // 1376336760025

对于您的信息:时区是需要的,因为我们将本地的详细信息,如年、月、日、小时等转换为全局即时信息,但是您的输入不包含任何区域或偏移信息。因此,必须为格式化程序提供一个区域或偏移量。

如您所见,SimpleDateFormat和Joda-Time默认使用系统时区(隐式)。但是,java.time-API和Time4J需要显式指定时区(IMHO是更干净的设计)。

票数 2
EN

Stack Overflow用户

发布于 2017-02-23 20:57:56

您可以使用:

代码语言:javascript
复制
ZonedDateTime date = ZonedDateTime.parse("mydate",DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
System.out.println(date.toInstant().toEpochMilli());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42425927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档