在本教程中,我们将向您展示如何将String转换为java.util.Date
。 许多Java初学者都被困在Date转换中,希望本摘要指南能以某种方式为您提供帮助。
// String -> Date
SimpleDateFormat.parse(String);
// Date -> String
SimpleDateFormat.format(date);
有关java.text.SimpleDateFormat
使用的一些常见日期和时间模式,请参见下表,请参考此JavaDoc。
信 | 描述 | 例子 |
ÿ | 年 | 2013年 |
中号 | 一年中的月份 | 7月7日,7日 |
d | 每月的一天 | 1-31 |
Ë | 星期几 | 星期五,星期日 |
一个 | 上午/下午标记 | 上午下午 |
H | 一天中的小时 | 0-23 |
H | 上午/下午 | 1-12 |
米 | 一小时内 | 0-60 |
s | 分钟 | 0-60 |
注意
您可能对此Java 8示例感兴趣- 如何将String转换为LocalDate
1.字符串= 2013年6月7日
如果为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.字符串= 2013年7月6日
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.字符串= 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.字符串= 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.字符串= 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]
参考文献
- SimpleDateFormat JavaDoc
- Java 8 –如何将字符串转换为LocalDate
- Stackoverflow:simpledateformat使用“ Z”文字解析日期
- 维基百科:ISO 8601
- 时区和偏移量类
- GMT VS UTC
- 什么是时区?
- 乔达时间
翻译自: https://mkyong.com/java/how-to-convert-string-to-date-java/