elv*_*vis -3 java datetime date utc
我想将日期格式从 更改"20230523154325"
为2023-05-23T15:43:25+0000"
.
我有这段代码,但不幸的是结果是这样的:"2023-05-23T15:43:25+0300"
。
所以我不想拥有,我想最后+0300
拥有。+0000
所以,这部分应该是完全相同的2023-05-23T15:43:25
,而不是+0300
应该是+0000
。+0000
把这个放在最后很重要。任何反馈将不胜感激!
public static void main(String[] args) {
String oldDate = "20230523154325";
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date newDateFormat = null;
try {
newDateFormat = sdf.parse(oldDate);
} catch (ParseException e) {
throw new RuntimeException(e);
}
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
System.out.println("The date is " + sdf1.format(newDateFormat));
}
Run Code Online (Sandbox Code Playgroud)
\n\n我想将日期格式从 20230523154325 更改为 2023-05-23T15:43:25+0000
\n
你可以这样做java.time
如果您使用的是 Java 8 或更高版本,
public static void main(String[] args) {\n // example input\n String oldDate = "20230523154325";\n // prepare a parser\n DateTimeFormatter parser = DateTimeFormatter.ofPattern("uuuuMMddHHmmss");\n // parse the oldDate with the parser\n LocalDateTime ldt = LocalDateTime.parse(oldDate, parser);\n // print the result (NO OFFSET SO FAR!!!)\n System.out.println(ldt);\n // add an offset (UTC = +00:00 = Z)\n OffsetDateTime odt = ldt.atOffset(ZoneOffset.UTC);\n // print it\n System.out.println(odt);\n // prepare a formatter for the desired output\n DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd\'T\'HH:mm:ssxxxx");\n // then print the datetime plus offset in the desired format\n System.out.println(odt.format(formatter));\n}\n
Run Code Online (Sandbox Code Playgroud)\npublic static void main(String[] args) {\n // example input\n String oldDate = "20230523154325";\n // prepare a parser\n DateTimeFormatter parser = DateTimeFormatter.ofPattern("uuuuMMddHHmmss");\n // parse the oldDate with the parser\n LocalDateTime ldt = LocalDateTime.parse(oldDate, parser);\n // print the result (NO OFFSET SO FAR!!!)\n System.out.println(ldt);\n // add an offset (UTC = +00:00 = Z)\n OffsetDateTime odt = ldt.atOffset(ZoneOffset.UTC);\n // print it\n System.out.println(odt);\n // prepare a formatter for the desired output\n DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd\'T\'HH:mm:ssxxxx");\n // then print the datetime plus offset in the desired format\n System.out.println(odt.format(formatter));\n}\n
Run Code Online (Sandbox Code Playgroud)\n有针对标准/常见格式的预构建格式DateTimeFormatter.ISO_OFFSET_DATE_TIME
,例如 ,值得一看。但是,您必须手动DateTimeFormatter
创建这两个,因为没有一个预构建的可以解析您的输入格式,并且它们都不能产生您想要的输出。
您的尝试涉及您的机器/jvm 的区域/偏移量,当代码在具有不同区域/偏移量的另一台机器上执行时,它甚至会更改偏移量。
\n这就是为什么你
\njava.util.Date
并且java.text.SimpleDateFormat
无论何时何地,只要有可能\xe2\x80\xa6java.time
因为您可以完全控制区域/偏移处理public static void main(String[] args) {\n String oldDate = "20230523154325";\n DateTimeFormatter parser = DateTimeFormatter.ofPattern("uuuuMMddHHmmss");\n DateTimeFormatter formatter = DateTimeFormatter\n .ofPattern("uuuu-MM-dd\'T\'HH:mm:ssxxxx");\n String desiredResult = LocalDateTime.parse(oldDate, parser)\n .atOffset(ZoneOffset.UTC)\n .format(formatter);\n System.out.println(desiredResult);\n}\n
Run Code Online (Sandbox Code Playgroud)\n2023-05-23T15:43:25\n2023-05-23T15:43:25Z\n2023-05-23T15:43:25+0000\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
163 次 |
最近记录: |