Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ISO_OFFSET_date_time的Java日期时间格式模式_Java_Datetimeformatter - Fatal编程技术网

ISO_OFFSET_date_time的Java日期时间格式模式

ISO_OFFSET_date_time的Java日期时间格式模式,java,datetimeformatter,Java,Datetimeformatter,我在寻找ISO\u OFFSET\u date\u time的日期时间格式模式 2019-09-30T10:05:16+10:00 yyyy-MM-dd'T'HH:MM:ssZ对2019-09-30T10:05:16+1000有效,但我需要区域偏移中的冒号 如果这不可能,我需要一个正则表达式。这里需要uuu-MM-dd'T'HH:MM:ssXXX String str = "2019-09-30T10:05:16+10:00"; DateTimeFormatter form

我在寻找
ISO\u OFFSET\u date\u time的日期时间格式模式

2019-09-30T10:05:16+10:00
yyyy-MM-dd'T'HH:MM:ssZ
2019-09-30T10:05:16+1000有效,但我需要区域偏移中的冒号


如果这不可能,我需要一个正则表达式。

这里需要
uuu-MM-dd'T'HH:MM:ssXXX

String str = "2019-09-30T10:05:16+10:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssXXX");
OffsetDateTime datetime = OffsetDateTime.parse(str, formatter);
System.out.println(datetime);

视情况而定<代码>日期时间格式。ISO_OFFSET_DATE_TIME
打印和解析带秒和不带秒的字符串,秒的小数点最多为9位小数

如果您只需要问题中给出的格式变体的模式,有秒,没有分数秒,MC皇帝的答案正是您所需要的

如果您需要
ISO\u OFFSET\u DATE\u TIME
的充分灵活性,那么没有任何模式可以提供这种灵活性。然后您需要使用正则表达式。而这又很难像格式化程序那样为您提供严格的验证。正则表达式可能仍然会变得很复杂,很难阅读


链接:提供更多详细信息。

您可以使用
yyyy-MM-dd'T'HH:MM:sszzz
uuu-MM-dd'T'HH:MM:ssXXX

演示:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "2019-09-30T10:05:16+10:00";
        OffsetDateTime odt = OffsetDateTime.parse(strDateTime);
        // Default format i.e. OffsetDateTime#toString
        System.out.println(odt);

        // Custom format
        System.out.println(odt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZZZZZ")));
        System.out.println(odt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX")));
    }
}
2019-09-30T10:05:16+10:00
2019-09-30T10:05:16+10:00
2019-09-30T10:05:16+10:00
输出:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "2019-09-30T10:05:16+10:00";
        OffsetDateTime odt = OffsetDateTime.parse(strDateTime);
        // Default format i.e. OffsetDateTime#toString
        System.out.println(odt);

        // Custom format
        System.out.println(odt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZZZZZ")));
        System.out.println(odt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX")));
    }
}
2019-09-30T10:05:16+10:00
2019-09-30T10:05:16+10:00
2019-09-30T10:05:16+10:00

分号是ISO时区,请尝试使用X而不是Z,看这里这是否全部或部分回答了您的问题?