在Java8次/JSR 310/threeten.orgbackport...
问:如何解析日期部分和时间部分之间带有“T”或“空格”的ISO-8601时间戳?
ISO-8601时间戳格式指定了文字“T”,以将日期规范与时间规范分开:
2015-05-12T15:42:00.123
许多应用程序以这种格式生成时间戳,并使用空格“char”而不是“T”。参考文献表明,ISO-8601允许通过相互协议实现这一点。
2015-05-12 15:42:00.123
因为我从多个来源摄取数据,所以我想允许“T”或“空格”。
我注意到模式字符串允许指定可选组件,但我看不到在模式字符串中指定“选项”的任何方法。。。
Q: 是否有任何方法可以在JSR 310模式字符串中“选择以下选项之一”?
我可以通过构建一个带有两种可选模式的DateTimeFormatter来实现这一点:
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.optionalStart().appendPattern("yyyy-MM-dd HH:mm:ss.SSS").optionalEnd()
.toFormatter();
看到optionalStart()和optionalEnd()让我想到:
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendPattern("[yyyy-MM-dd HH:mm:ss.SSS][yyyy-MM-dd'T'HH:mm:ss.SSS]")
.toFormatter();
然而,我不相信这是处理这种情况的正确方法。。。
问:处理多个DateTime模式的最佳实践解决方案是什么?
提前谢谢。
我自己的做法:
当接受来自我自己代码之外的文本时,我从不相信这些外部输入。见鬼,我甚至都不相信自己的内在投入。我总是把这些数据通过一个清洁器。作为清理的一部分,我将任何预期的ISO 8601字符串中的任何空格字符替换为T。
String datetimeInput = input.replace( " ", "T" ) ;
我还习惯调用Google Guava库来修剪输入字符串中的空格。有关详细信息,请参阅此答案。
并检查NULL、非打印和其他不合适的字符。那些不可打印的会产生讨厌的错误。
只有在这之后,我才调用日期时间库(Joda time或java.time)。
此外,您应该使用try-catch-to-trap来捕获解析异常,以便在日期时间输入字符串无法满足您的期望时更优雅地处理。
我是Groovy的新手,我正在从事一个使用Groovy脚本的项目。我需要在中将Unix时间戳转换为格式。我还找不到简单明了的解决方案。 我现在有以下代码。 然而,当我在Flowable Script Task中尝试此操作时,会出现以下错误; 问题评估脚本:javax.script.ScriptExc的:groovy.lang.Mis看作方法异常:没有签名的方法:java.util.Date.for
我正在将一个项目从Joda Time过渡到java8的本机时间库,我遇到了一个障碍。 我一直找不到持续时间的格式化程序。我想有一个自定义的字符串格式,例如HHH MM,其中75小时15分钟的持续时间将格式化为“75 15”。 通过转换为句点并使用句点Formatter,Joda-Time很容易做到这一点,但是我无法在Java8中找到这种类型的类。我错过了什么吗?
问题内容: 我有一个要求,我要获取两个ISO 8601时间戳格式的字符串,并且必须对其进行比较并获取它们的最大时间戳。字符串采用以下格式。 为了进行比较,我需要将它们转换为DB2时间戳,然后进行比较。问题出在“ T”和“ Z”字母上。因此,我无法施展。我知道我可以简单地 将T和Z进行转换,但是我想知道是否有更好的方法。 我尝试了以下功能,但无法获得所需的结果。 使用DB2 LUW v9.7 问题答
问题内容: 如何将时间转换为ISO 8601日期格式?(-_-;) 问题答案: 面向对象 这是推荐的方法。 程序 对于旧版本的PHP,或者您更熟悉过程代码。
不,我说的不是时区偏移,而是根据夏令时等因素,一个地区的时区偏移在一年中可能会有所不同。我说的是IANA保持的实际时区。我知道ISO 8601不支持这些,对吗? 平台正在采取哪些措施来支持在类似 ISO 8601 的字符串表示中标识时区?我注意到最新的Java日期/时间库为此使用了扩展的ISO 8601格式,例如。(请参见日期时间格式化程序 API。 是否有一些融合的约定(例如与其他语言和平台)来
问题内容: 我将Spring Framework用于我的服务API和日期时间解析。具体来说,我使用,它使用户可以灵活地仅使用日期,或者同时使用日期和时间,这是必需的。 相信我,我已经看到了所有这些我可以告诉人们的相关问题,例如this和this等等。 以前,我以日期为准,然后在服务层中使用上面提到的joda格式化程序处理日期,但是现在我想在控制器中添加请求验证,这意味着如果请求在语法上不正确,则该