gpt4 book ai didi

java - 使用 simpledateformat 解析 6 位毫秒数的字符串日期

转载 作者:行者123 更新时间:2023-12-02 03:05:12 25 4
gpt4 key购买 nike

我正在尝试将字符串日期解析为特定的日期格式,但是当我使用 SimpleDateFormat 中提供的选项时我总是得到不同的结果。这是我试图解析的字符串:

String datetToParse = ""2019-07-04 00:32:08:627158"" into  04-JUL-19 12.32.08.627158000 AM. 

我可以使用 simpledateformat 或任何其他日期格式化程序来实现此目的吗?任何帮助将不胜感激。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormat {

public static void main(String[] args) {
String date = "2019-07-04 00:32:08:627158";

SimpleDateFormat sf = new SimpleDateFormat("yymmdd");
Date d = null;
try {
d= sf.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(d);

}

}

最佳答案

您应该使用新的 DateTimeFormatter,而不是长期弃用的 SimpleDateFormatjava.util.Date。和 LocalDateTimejava.timejava.time.format 包中。如果没有其他原因,除了 SimpleDateFormat不提供纳秒分辨率(并且您的输入似乎具有纳秒)。

类似于,

String date = "2019-07-04 00:32:08:627158";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"yyyy-MM-dd HH:m:ss:nnnnnn");
LocalDateTime ldt = LocalDateTime.parse(date, formatter);
DateTimeFormatter outFormatter = DateTimeFormatter.ofPattern(
"dd-MMM-yy hh.mm.ss.nnnnnn a");
System.out.println(outFormatter.format(ldt));

输出

04-Jul-19 12.32.08.627158 AM

如果您想要JUL,请添加toUpperCase() 调用,如果您需要额外的三个零,请将它们添加到outFormatter 中。就像,

DateTimeFormatter outFormatter = DateTimeFormatter.ofPattern(
"dd-MMM-yy hh.mm.ss.nnnnnn000 a");
System.out.println(outFormatter.format(ldt).toUpperCase());

输出

04-JUL-19 12.32.08.627158000 AM

不清楚这三个零来自哪里,如果你想要更高的精度,我会使用

DateTimeFormatter outFormatter = DateTimeFormatter.ofPattern(
"dd-MMM-yy hh.mm.ss.nnnnnnnnn a");
System.out.println(outFormatter.format(ldt).toUpperCase());

但是输出(正如我所期望的)

04-JUL-19 12.32.08.000627158 AM

关于java - 使用 simpledateformat 解析 6 位毫秒数的字符串日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com