文字列を日付に変換する方法 – Java
このチュートリアルでは、文字列を `java.util.Date`に変換する方法を説明します。多くのJavaの初心者は、日付の変換に固執しています、この要約のガイドがいくつかの点であなたを助けてくれることを願っています。
//String -> Date
SimpleDateFormat.parse(String);
//Date -> String
SimpleDateFormat.format(date);
java.text.SimpleDateFormatで使用される一般的な日付と時刻のパターンについては、次の表を参照してください。http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormatを参照してください。 html[JavaDoc]
| =================== |文字|説明|例| y |年| 2013 | M | 7月、7日、7日| d |日| 1月31日| E |曜日名|金曜日、日曜日| a | AM/PMマーカー| AM、PM | H | 1日の時間| 0 -23 | h |時間(午前/午後)| 1-12 | m |時間(分)| 0-60 |秒|分秒| 0-60 | =============== ==================
1. String = 7-Jun-2013
3 ‘M’の場合、月はテキスト(Mon-Dec)、それ以外は数字(01-12)と解釈されます。
TestDateExample1.java
package com.mkyong.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateExample1 {
public static void main(String[]argv) {
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = "7-Jun-2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
出力
Fri Jun 07 00:00:00 MYT 2013 07-Jun-2013
2. String = 07/06/2013
TestDateExample2.java
package com.mkyong.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateExample2 {
public static void main(String[]argv) {
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateInString = "07/06/2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
出力
Fri Jun 07 00:00:00 MYT 2013 07/06/2013
3. String = Fri、2013年6月7日
TestDateExample3.java
package com.mkyong.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateExample3 {
public static void main(String[]argv) {
SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy");
String dateInString = "Fri, June 7 2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
出力
Fri Jun 07 00:00:00 MYT 2013 Fri, Jun 07 2013
4. String = 2013年6月7日金曜日12:10:56 PM
TestDateExample4.java
package com.mkyong.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateExample4 {
public static void main(String[]argv) {
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, MMM dd, yyyy HH:mm:ss a");
String dateInString = "Friday, Jun 7, 2013 12:10:56 PM";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
出力
Fri Jun 07 12:10:56 MYT 2013 Friday, Jun 07, 2013 12:10:56 PM
5. String = 2014-10-05T15:23:01Z
Z接尾辞はUTCを意味し、 `java.util.SimpleDateFormat`は正しく解析しないので、接尾辞Zを ‘0000’に置き換える必要があります。
TestDateExample5.java
package com.mkyong.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDateExample5 {
public static void main(String[]argv) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String dateInString = "2014-10-05T15:23:01Z";
try {
Date date = formatter.parse(dateInString.replaceAll("Z$", "+0000"));
System.out.println(date);
System.out.println("time zone : " + TimeZone.getDefault().getID());
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
出力
Sun Oct 05 23:23:01 MYT 2014 time zone : Asia/Kuala__Lumpur 2014-10-05T23:23:01+0800
Java 8では、これを `java.time.Instant`オブジェクトに変換して、指定したタイムゾーンで表示することができます。
TestDateExample6.java
package com.mkyong.date;
import java.time.** ;
public class TestDateExample6 {
public static void main(String[]argv) {
String dateInString = "2014-10-05T15:23:01Z";
Instant instant = Instant.parse(dateInString);
System.out.println(instant);
//get date time only
LocalDateTime result = LocalDateTime.ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId()));
System.out.println(result);
//get date time + timezone
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Africa/Tripoli"));
System.out.println(zonedDateTime);
//get date time + timezone
ZonedDateTime zonedDateTime2 = instant.atZone(ZoneId.of("Europe/Athens"));
System.out.println(zonedDateTime2);
}
}
出力
2014-10-05T15:23:01Z 2014-10-05T15:23:01 2014-10-05T17:23:01+02:00[Africa/Tripoli]2014-10-05T18:23:01+03:00[Europe/Athens].... === 参考文献 . http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html[SimpleDateFormat JavaDoc]。リンク://java8/java-8-how-to-convert-string-to-localdate/[Java 8 - どのように変換するか StringをLocalDateに変換する]。 http://stackoverflow.com/questions/2580925/simpledateformat-parsing-date-with-z-literal[Stackoverflow : simpledateformat parsing date with ‘Z’ literal]. https://en.wikipedia.org/wiki/ISO__8601[Wikipedia : ISO 8601] . https://docs.oracle.com/javase/tutorial/datetime/iso/timezones.html[Time ゾーンとオフセットクラス]。 http://www.diffen.com/difference/GMT__vs__UTC[GMT VS UTC] . http://www.timeanddate.com/time/what-is-a-time-zone.html[Whatとは タイムゾーン?]。 http://www.joda.org/joda-time/[Joda Time] リンク://タグ/変換/[変換]リンク://タグ/日付/[日付]リンク://タグ/インスタント/[インスタント]リンク://タグ/java8/[java8]リンク://タグ/タイムゾーン/[タイムゾーン]