使用 SimpleDateFormat 将字符串解析为日期
Parsing String to Date using SimpleDateFormat
我正在尝试将 string
"Nov 6, 2017 11:47:53 AM"
解析为 Date
SimpleDateFormat
但我找不到要使用的正确格式。有人可以帮助我吗?
使用"MMM dd, yyyy hh:mm:ss aaa"
public class Tester {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date = new Date();
//Nov 6, 2017 11:47:53 AM
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa");
//sdf.parse(source);
System.out.println(sdf.format(date));
}
}
输出:
2017 年 11 月 6 日04:35:20上午
假设一天中的时间在 1-12
范围内,应该能够解析此文本的模板是 MMM d, yyyy hh:mm:ss a
。如果它们在 0-11
范围内,将 hh
替换为 KK
。
即使在 Android 上,也值得考虑丢弃早已过时的 类 Date
,尤其是 SimpleDateFormat
,这被证明是相当麻烦的。我建议获取 ThreeTenABP。它将允许您在 Android 上使用现代 Java 日期和时间 API(对于 JSR-310,这是首次描述 API 的三十分之一)。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH);
String stringToParse = "Nov 6, 2017 11:47:53 AM";
LocalDateTime dateTime = LocalDateTime.parse(stringToParse, dtf);
结果是 2017-11-06T11:47:53
的 LocalDateTime
。
如果您确实需要一个老式的 Date
对象来实现某些遗留 API,您可以这样做:
Date oldfashionedDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
在 中有更多关于使用 ThreTenABP 的内容。
我正在尝试将 string
"Nov 6, 2017 11:47:53 AM"
解析为 Date
SimpleDateFormat
但我找不到要使用的正确格式。有人可以帮助我吗?
使用"MMM dd, yyyy hh:mm:ss aaa"
public class Tester {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date = new Date();
//Nov 6, 2017 11:47:53 AM
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss aaa");
//sdf.parse(source);
System.out.println(sdf.format(date));
}
}
输出:
2017 年 11 月 6 日04:35:20上午
假设一天中的时间在 1-12
范围内,应该能够解析此文本的模板是 MMM d, yyyy hh:mm:ss a
。如果它们在 0-11
范围内,将 hh
替换为 KK
。
即使在 Android 上,也值得考虑丢弃早已过时的 类 Date
,尤其是 SimpleDateFormat
,这被证明是相当麻烦的。我建议获取 ThreeTenABP。它将允许您在 Android 上使用现代 Java 日期和时间 API(对于 JSR-310,这是首次描述 API 的三十分之一)。
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM d, uuuu h:mm:ss a", Locale.ENGLISH);
String stringToParse = "Nov 6, 2017 11:47:53 AM";
LocalDateTime dateTime = LocalDateTime.parse(stringToParse, dtf);
结果是 2017-11-06T11:47:53
的 LocalDateTime
。
如果您确实需要一个老式的 Date
对象来实现某些遗留 API,您可以这样做:
Date oldfashionedDate = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
在