Java SimpleDateFormat 解析中缺少月份和日期

问题描述 投票:0回答:2

使用 SimpleDateFormat:

DateFormat df = new SimpleDateFormat("dd-MMMM-YYYY kk:mm:ss.SSS");
Date extractedDate = df.parse(possibleDate);

输入给定:

11-May-2017 21:45:33.614

输出数据对象:

Sun Jan 01 21:45:33 MST 2017

我已经尝试了很多迭代,但它不会拉动月份和日期。

java simpledateformat
2个回答
4
投票

使用

dd-MMM-yyyy kk:mm:ss.SSS
作为图案

示例:

DateFormat df = new SimpleDateFormat("dd-MMM-yyyy kk:mm:ss.SSS");
Date extractedDate = df.parse("11-May-2017 21:45:33.614");
System.out.println(extractedDate);

输出:

Thu May 11 21:45:33 BDT 2017

另一件事如果您使用

kk
表示小时,则小时应代表1到24之间。如果0到23之间的小时使用
HH
而不是
kk


0
投票

在现代 Java 中,仅使用 java.time 类。切勿使用遗留类

Date
Calendar
SimpleDateFormat

指定

Locale
以确定用于解析本地化值(例如月份名称)的人类语言和文化规范。

提示:在进行日期时间值的数据交换或日期存储时,避免使用本地化值。仅使用标准 ISO 8601 格式。

String input = "11-May-2017 21:45:33.614";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMMM-uuuu HH:mm:ss.SSS" );
LocalDateTime ldt = LocalDateTime.parse( input , f );

ldt.toString() = 2017-05-11T21:45:33.614

© www.soinside.com 2019 - 2024. All rights reserved.