19

次のコードは、「Wed Jun 13 00:00:00 EST 2010」ではなく、「Wed Jan 13 00:00:00 EST 2010」として解析された日付を私に与えています。どんなアイデアでも大歓迎です。

    SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss");

    String str = "2010-06-13T00:00:00";

    Date date = sf.parse(str);

    System.out.println(" Date " + date.toString());
4

4 に答える 4

51

試す:

"yyyy-MM-dd'T'HH:mm:ss"

MM月を意味します。mm分を意味します。SimpleDateFormatサポートされている日付と時刻のパターンの詳細については、ドキュメントを参照してください。

于 2010-06-16T19:56:57.577 に答える
5

問題は、「mm」を月として使用していて、「mm」が分を表していることです。以下は、利用可能なすべての日付形式です。詳細については、こちらのドキュメントを参照してください。

Symbol  Meaning                Kind         Example
D       day in year             Number        189
E       day of week             Text          E/EE/EEE:Tue, EEEE:Tuesday, EEEEE:T
F       day of week in month    Number        2 (2nd Wed in July)
G       era designator          Text          AD
H       hour in day (0-23)      Number        0
K       hour in am/pm (0-11)    Number        0
L       stand-alone month       Text          L:1 LL:01 LLL:Jan LLLL:January LLLLL:J
M       month in year           Text          M:1 MM:01 MMM:Jan MMMM:January MMMMM:J
S       fractional seconds      Number        978
W       week in month           Number        2
Z       time zone (RFC 822)     Time Zone     Z/ZZ/ZZZ:-0800 ZZZZ:GMT-08:00 ZZZZZ:-08:00
a       am/pm marker            Text          PM
c       stand-alone day of week Text          c/cc/ccc:Tue, cccc:Tuesday, ccccc:T
d       day in month            Number        10
h       hour in am/pm (1-12)    Number        12
k       hour in day (1-24)      Number        24
m       minute in hour          Number        30
s       second in minute        Number        55
w       week in year            Number        27
G       era designator          Text          AD
y       year                    Number        yy:10 y/yyy/yyyy:2010
z       time zone               Time Zone     z/zz/zzz:PST zzzz:Pacific Standard 
于 2016-02-29T21:28:23.170 に答える
1

現代の答え:

    String str = "2010-06-13T00:00:00";
    LocalDateTime dateTime = LocalDateTime.parse(str);
    System.out.println("Date-time " + dateTime);

出力:

日時 2010-06-13T00:00

私はjava.time最新の Java 日付と時刻 API を使用し、推奨しています。解析のための明示的なフォーマッタさえ必要ありません。これは、文字列が、java.timeクラスがデフォルトとして解析する国際標準である ISO 8601 形式であるためです。java.time2014年に出ました。

この質問が行われた 2010 年には、SimpleDateFormat日付と時刻を解析するために私たちが持っていたものでしたが、幸いなことに、そのクラスも面倒だったため、現在では時代遅れと見なされています。

文字列に時刻のない日付のみが含まれている場合はLocalDate、まったく同じ方法でクラスを使用します (これは重複した質問で尋ねられました)。

    String dateStr = "2018-05-23";
    LocalDate date2 = LocalDate.parse(dateStr);
    System.out.println(date2);

2018-05-23

リンク: Oracle チュートリアル: Date Timeの使用方法を説明しますjava.time

于 2018-04-29T18:06:54.627 に答える