相关疑难解决方法(0)

如何在Java 8/JSR 310/threeten.org中处理ISO-8601时间戳中的'可选'T?

在Java 8时代/ JSR 310/threeten.org backport ...

问:如何在日期部分和时间部分之间用"T"或"空格"解析ISO-8601时间戳?

时间戳的ISO-8601格式指定文本"T"以将日期规范与时间规范分开:

2015-05-12T15:42:00.123
Run Code Online (Sandbox Code Playgroud)

许多应用程序以这种格式生成时间戳,空格为'char而不是'T'.参考文献表明ISO-8601通过相互协议允许这一点.

2015-05-12 15:42:00.123
Run Code Online (Sandbox Code Playgroud)

因为我从多个来源摄取数据,我想要允许'T'或空格''.

我观察到模式字符串允许指定可选组件,但我没有看到任何方式在模式字符串中指定"选择"...

问:有没有办法在JSR 310模式字符串中"选择一个完全一个"?

我能够通过构造一个带有两个可选模式的DateTimeFormatter来实现这个目的:

DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
    .appendOptional(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
    .optionalStart().appendPattern("yyyy-MM-dd HH:mm:ss.SSS").optionalEnd()
    .toFormatter();
Run Code Online (Sandbox Code Playgroud)

看到optionalStart()和optionalEnd()导致我:

DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
    .appendPattern("[yyyy-MM-dd HH:mm:ss.SSS][yyyy-MM-dd'T'HH:mm:ss.SSS]")
    .toFormatter();
Run Code Online (Sandbox Code Playgroud)

但是,我不相信这是处理这种情况的正确方法......

问:处理多个DateTime模式的最佳实践解决方案是什么?

提前致谢.

java datetime java-8 java-time

12
推荐指数
1
解决办法
2574
查看次数

如何使用可选的时间参数创建DateFormat?

我希望构造一个可选择具有时间参数的日期格式.

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd [hh:mm]");
Run Code Online (Sandbox Code Playgroud)

是否也可以构造一个能够解析不同格式的日期格式对象?比如尝试当前的语言环境,然后再回到ISO-8601,或者如果一个失败,我应该写多个日期格式?

更新:回顾这个问题,我可以看到我没有指定多个日期格式的原因是解析字符串,而不是格式化日期,因此格式化日期对象的模糊不是我的问题.如果考虑到这一点,时间部分是否包含在解析字符串中.

java format datetime date

5
推荐指数
1
解决办法
7293
查看次数

在 DateTimeFormatter 中处理多种格式

String我正在使用 Java 8 开发一个函数,该函数必须处理以下LocalDateTime日期的转换:

  • 2019-06-20 12:18:07.207 +0000 世界标准时间
  • 2019-06-20 12:18:07.20 +0000 世界标准时间
  • 2019-06-20 12:18:07.2 +0000 世界标准时间
  • 2019-06-20 12:18:07 +0000 世界标准时间

这些字符串是从我无法更改的外部库生成的。

按照SO答案Optional parts in SimpleDateFormat中给出的建议,我尝试使用 type 提供的可选格式DateTimeFormatter,使用字符[]。我尝试了以下模式:

  • yyyy-MM-dd HH:mm:ss[.S[S[S]]] Z z
  • yyyy-MM-dd HH:mm:ss[.S[S][S]] Z z

然而,它们都不起作用。

有什么建议吗?

java date-formatting java-8 dateformatter

5
推荐指数
1
解决办法
6004
查看次数

如何将模糊字符串解析为日期?

我试图找出一种将String解析为Date对象的"简单"方法.

String可以是yyyyMMdd,yyyyMMddHHmm或yyyyMMddHHmmSS.

目前,我正在查看String的长度,并根据长度创建DateParser.有更优雅的方式吗?

java string parsing date

4
推荐指数
1
解决办法
2332
查看次数