如果偏移量为4位(-05:00),我可以使用:yyyy-mm-dd-hh.mm.sss.sssssxxx
,但这不适用于3位。
有什么想法吗?
用大写字母X代替X,因此是xxx。不同之处在于,大X可以将输入字母“Z”识别为UTC-Offset+00:00,而小模式字母X不能识别。
建议的模式:
yyyy-MM-dd-HH.mm.ss.SSSSSSXXX
请注意以下jdk-bug:
String input = "2014-05-02-10.45.05.993280-5:00";
DateTimeFormatter f = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd-HH.mm.ss.SSSSSS")
.parseLenient()
.appendOffset("+HH:MM", "Z")
.toFormatter();
System.out.println(f.parse(input, ZonedDateTime::from));
但它抛出了一个异常:
线程“main”java.time.format.dateTimeParseException中的异常:无法在索引26处解析文本'2014-05-02-10.45.05.993280-5:00',该索引位于java.time.format.dateTimeFormatter.parseresolved0(DateTimeFormatter.java:1947),位于java.time.format.dateTimeFormatter.parse(dateTimeFormatter.java:1849),位于helloworld.main(Helloworld.java:16),位于helloworld.main
因此,宽大的解析也无济于事。所以现在只剩下三个选择:
>
使用bug报告者建议的变通方法:[...]解决方法是单独解析日期/时间,使用手工编码的偏移量解析器,并将LocalDateTime与手工解析的偏移量结合起来。不是一件容易的事情。
尝试您自己专门的字符串预处理。如果您有一个固定的格式,那么您可以尝试在第26位插入零位数(如果总输入长度太小了一位数)。
或者您可以使用外部库来完成此操作。如果您愿意添加额外的依赖项,我的库Time4J(V4.0)可以做到这一点。请参见此代码:
String input = "2014-05-02-10.45.05.993280-5:00";
ZonalDateTime zdt =
ZonalDateTime.parse(
input,
Moment.localFormatter("yyyy-MM-dd-HH.mm.ss.SSSSSSXXX", PatternType.CLDR));
System.out.println(zdt); // 2014-05-02T10:45:05,993280UTC-05:00
ZonedDateTime result = zdt.toTemporalAccessor();
我使用的是“亚洲/曼谷”区域id。该偏移是从格林尼治时间UTC 07:00开始的。 但是当我做了下面的事情时,设置为“01/01/1900 7:00:00.000”时不是7:00 结果就是 周一一月一日07:00:00 ICT 1900 -402 周一一月一日06:00:00 ICT 1900 -420 我想知道偏移量是否在1900年1月1日早上7点左右发生了变化,所以我在维基百科上查了一下。ht
一切都清楚一次是UTC中的日期:
问题内容: 我需要以[+/-] hh:mm的格式保存手机的时区 我正在使用TimeZone类来处理此问题,但是我只能获得以下格式: 我宁愿不对结果进行子串化,是否可以设置任何键或选项标志来仅获取值,而不获取该时区的名称(GMT / CET / PST …)? 问题答案: 我需要以[+/-] hh:mm的格式保存手机的时区 不,你没有。仅靠偏移量是不够的,您需要存储整个时区名称/ id。例如,我住在
我有一个格式为“2019-04-25T16:34:28-05:00”的字符串。我已经通过模式“yyyy-mm-dd't'hh:mm:ssz”通过joda-time解析了字符串。 它在DateTime中给出的输出是“2019-04-25t15:34:28.000-06:00”。
问题内容: 我知道相反。给定一个时区,我可以通过以下代码片段获取时区偏移量: 我想知道如何从时区偏移量获取时区名称。 鉴于 (以毫秒为单位; +6.00偏移) 我想得到以下任何可能的时区名称的结果: 问题答案: 用
问题内容: MySQL中有没有一种方法可以计算任何时区的偏移量?例如,要获取时区中的本地时间。我想做的是计算该时区的偏移量,并将该偏移量添加到GMT以获得本地时间。 问题答案: 如果要计算某个时区(例如,美国/温哥华)与UTC的时差,则可以按照以下步骤进行操作: 为此,您首先需要按照以下概述将时区信息加载到mysql中:http : //dev.mysql.com/doc/refman/5.0/e