java中怎样转换为时间偏移量_如何使用DateTimeFormatter用冒号解析偏移量? - java...

在Java 8中,要解析带有时间偏移量的字符串,如""2020-01-31 12:13:14 +03:00"",应使用DateTimeFormatter的""yyyy-MM-dd HH:mm:ss XXX""格式。正确的代码示例是:`DateTimeFormatter formatter = DateTimeFormatter.ofPattern(""yyyy-MM-dd HH:mm:ss XXX""); ZonedDateTime tmpTimestamp = ZonedDateTime.parse(timeStamp, formatter);` 该格式适用于包含小时和分钟的偏移量,且可处理""Z""、""+00""、""+0000""或""+00:00""的情况。" 116556855,10541982,Linux C语言文件操作指南,"['C语言', '文件操作', 'Linux系统']
摘要由CSDN通过智能技术生成

我有以下字符串:String timeStamp = "2020-01-31 12:13:14 +03:00"。

我尝试使用Java 8 DateTimeFormatter解析它。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( format );

tmpTimestamp = ZonedDateTime.parse( timeStamp, formatter );

其中format是以下之一:

"yyyy-MM-dd' 'HH:mm:ss' 'Z",

"yyyy-MM-dd' 'HH:mm:ss' 'X",

"yyyy-MM-dd' 'HH:mm:ss' 'x",

"yyyy-MM-dd HH:mm:ss Z",

"yyyy-MM-dd HH:mm:ss X",

"yyyy-MM-dd HH:mm:ss x",

没有任何工作。我总是在偏移子字符串“+03:00”中指向“+”或“:”字符的DateTimeParseException

根据JavaDocs:Class DateTimeFormatter“+03:00”应受以下任意一种支持:Z,X和x。

那么问题是如何构造格式化程序字符串以对其进行解析?

参考方案

您应该使用时间X(yyyy-MM-dd HH:mm:ss XXX):

String timeStamp = "2020-01-31 12:13:14 +03:00";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss XXX");

ZonedDateTime tmpTimestamp = ZonedDateTime.parse(timeStamp, formatter);

从docs:

偏移量X和x:它将根据图案字母的数量来格式化偏移量。

除非分钟非零,否则一个字母仅输出小时,例如“+01”,在这种情况下,分钟也会输出,例如“+0130”。

两个字母输出小时和分钟,不带冒号,例如'+0130'。

三个字母输出小时和分钟,并带有冒号,例如'+01:30'。

四个字母输出小时和分钟,可选秒,不带冒号,例如“+013015”。

五个字母输出小时和分钟,可选秒,以冒号表示,例如“+01:30:15”。

六个或更多字母会引发IllegalArgumentException。

当要输出的偏移量为零时,模式字母“X”(大写)将输出“Z”,而模式字母“x”(小写)将输出“+00”,“+ 0000”或“+00” :00'。

或者,您可以使用五个字母(XXXXX),也可以使用ZZZ或ZZZZZ代替XXX或XXXXX。

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)Java:将毫秒转换为HH:MM:SS - java

我有一个毫秒单位的值,我想将此值转换为HH::MM:SS.fff这仅是持续时间的目的。我知道有一个基本的方法可以做到这一点:String.format("%d min, %d sec", TimeUnit.MILLISECONDS.toMinutes(millis), TimeUnit.MILLISECONDS.toSeconds(mil…Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值