我为DateTimeFormatter使用格式字符串:uuuu-mm-dd't'hh:mm:ssx
输入字符串:“2014-01-01T00:30:00+00:00”
结果:java.time.format.DateTimeParseException:无法分析文本“2014-01-01T00:30:00+00:00",未分析的文本位于索引22
输入字符串:“2014-01-01T00:30:00Z”
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX");
OffsetDateTime parsed = OffsetDateTime.parse(dateTimeAsString, formatter);
这有点复杂。正如jvdmr所说,Xs的计数很重要。XXXXX
将识别-08:30:15
,但不能识别-083015
。xxxx
将识别后者,但不能识别前者。
为了考虑所有可能的示例格式,我们需要指定不同的可能性。这可以在使用方括号的格式模式字符串内完成。这些附件包括可选部件。一个小实验表明,以下模式涵盖了所有示例:
uuuu-mm-dd't'hh:mm:ss[XXXX][XXXX][X]
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss[XXXXX][XXXX][X]");
for (String dts : new String[] {
"2014-01-01T00:30:00-08:30:15", "2014-01-01T00:30:00-083015",
"2014-01-01T00:30:00-08:30", "2014-01-01T00:30:00-0830",
"2014-01-01T00:30:00-08", "2014-01-01T00:30:00Z",
}) {
System.out.println(OffsetDateTime.parse(dts, formatter));
}
2014-01-01T00:30-08:30:15
2014-01-01T00:30-08:30:15
2014-01-01T00:30-08:30
2014-01-01T00:30-08:30
2014-01-01T00:30-08:00
2014-01-01T00:30Z
VelNaga建议不要硬编码ISO日期-时间格式。由于编写格式模式字符串容易出错,这可能是一个好主意。例如:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.appendPattern("[XXXXX][XXXX][X]")
.toFormatter();
使用此格式化程序的输出与使用上面的格式化程序的输出相同。它更冗长,但我们很容易最终认为它是值得的,因为它不太容易出错,可能更清楚,更容易阅读。
目标:找到和,然后以以下格式构造URL。 示例URL:/actions/sleep?duration=2002-10-10t12:00:00−05:00 格式基于W3C建议:http://www.w3.org/tr/xmlschema11-2/#datetime 文件中说: 例如,2002-10-10T12:00:00-05:00(2002年10月10日中午,中央夏令时和美国东部标准时间)等于20
例如: 正则表达式有一些问题,因为字符串的某些组成部分被认为是“有效”的是推测的,可能不需要。 此外,字符串可以格式化为:这一事实也让我有些困惑 提前谢谢各位。
我在DB(MySql)中有一个简单的表,其中包含标准日期格式的日期。我正在grails中执行一个简单的select,并将输出呈现为JSON格式,以便jqgrid获取。 在jqgrid中,我有以下单元格定义: 我希望在屏幕上看到的日期是2013年3月31日22:06,这是我从另一个grails gsp函数获得的mysqlworkbench中显示的日期 但jqgrid单元格显示2013年3月31日21
问题内容: 日期格式:“ yyyy-MM-dd’T’HH:mm:ss.SSSZ ” 输入日期:“ 2017-09-18T03:08:20.888 + 0200 ” 问题:我需要从输入的字符串中检索时区偏移量,并在该时区中打印已解析的日期。换句话说,我需要输出与输入相同。 成功解析输入日期并返回对象。众所周知,Date没有时区字段。将解析的日期转换为其时区,默认情况下为系统时区。当我打印此日期时,它
所以基本上我需要做的就是想办法从2013-07-30T00:00:000000+11:00中提取出+11:00。请救命!
我看到多伦多在UTC-4上。 但我怎么才能得到真正的偏移呢?