当前位置: 首页 > 知识库问答 >
问题:

使用simpledateformat分析带有6位毫秒的字符串日期[duplicate]

吕成业
2023-03-14

我试图将字符串日期解析为特定的日期格式,但当我使用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);

    }

}

共有1个答案

白星渊
2023-03-14

您应该在java.timejava.util.date包中使用新的datimeformatterlocaldatetime而不是长期不推荐使用的simpledateformatjava.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
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
 类似资料:
  • 下面是SimpleDateFormat的设置。 下面是开发人员文档中可解析日期字符串的可能差异列表。正如您所看到的,它们中没有一个在时区中有冒号。 我的第二个问题是当我得到一个时区设置为Z的日期字符串时,这是将时区设置为GMT的标准,相当于0000。然而,我又得到了一个ParseException。下面是日期字符串的一个示例。 提前致谢

  • (我想)快速提问。如何将解析为(将时间设置为)? java.time.format.DateTimeParseException:无法分析文本“2007-07-21+00:00”:无法从TemporalAccessor获取OffsetDateTime:{offsetseconds=0},ISO解析为类型java.time.format.Parsed的2007-07-21

  • 我在S3中有一个日期,我用它创建了一个雅典娜表。我在S3中有一些json格式的日期条目,在运行查询时,Athena不接受这些条目作为日期或时间戳。 AWS Glue将这两个字段都作为字符串,并且当将它们分别更改为timestamp和date时,围绕timestamp的查询将不起作用,从而在timestamp字段上提供ValidationError。 无论如何,我找到了一种使用prestodb da

  • 问题内容: 将日期转换为其他格式的字符串时遇到问题。日期: 我想将此格式转换为另一种格式:。 当我尝试将其转换时,使用以下方法会得到不同的结果: 我得到了错误的结果,该月已替换为分钟: 问题答案: 这是错误的。这应该是。有关将日期从一种格式转换为另一种格式的更多详细信息,请参见此http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDat

  • 我在将日期转换为不同格式的字符串时遇到了问题。日期: 我想将此格式转换为另一种格式:。 当我尝试转换它时,我会得到不同的结果: 我得到了一个错误的结果,月被替换成了分钟:

  • 问题内容: 我在字符串中有一个日期,例如“ 2012年12月12日”。如何将其转换为毫秒(长)? 问题答案: 使用SimpleDateFormat