我需要将时间戳字符串转换为java.util.Date
。例如: -如何将时间戳字符串转换为java.util.Date
MMDDYYHHMMSS
到MM-DD-YY HH-MM-SS
哪里MM
是月,DD
是日期,YY
是一年,HH
是小时,MM
是分SS
是秒。
我需要将时间戳字符串转换为java.util.Date
。例如: -如何将时间戳字符串转换为java.util.Date
MMDDYYHHMMSS
到MM-DD-YY HH-MM-SS
哪里MM
是月,DD
是日期,YY
是一年,HH
是小时,MM
是分SS
是秒。
您可以像这样做:
DateFormat format = new SimpleDateFormat("MMddyyHHmmss");
Date date = format.parse("022310141505");
,但我会强烈建议您使用Joda Time代替。这是一个更好的日期/时间图书馆。尤其是,Joda Time中的格式化器/解析器是线程安全的,因此您可以自由地静态重用它们; java.text.SimpleDateFormat
不是线程安全的,因此您需要为每个线程创建一个或使用块对其进行序列化访问。
使用带有适当格式字符串的SimpleDateFormat(小心使用正确的格式字母,大写和小写字母有不同的含义!)。
java.time.LocalDateTime.parse(
"" ,
DateTimeFormatter.ofPattern("MMdduuHHmmss")
).format(
DateTimeFormatter.ofPattern("MM-dd-uu HH-mm-ss")
)
18年1月23日12-34-56
现代的方法使用java.time类。
定义格式模式以匹配您的输入字符串。
DateTimeFormatter f = DateTimeFormatter.ofPattern("MMdduuHHmmss") ;
您的两位数年份将被解释为21世纪(20xx)。
解析为LocalDateTime
,因为您的输入字符串缺少任何时区或UTC偏移的指示符。
LocalDateTime ldt = LocalDateTime.parse("" , f) ;
ldt.toString():2018-01-23T12:34:56
生成在所期望的格式的字符串。
DateTimeFormatter fOut = DateTimeFormatter.ofPattern("MM-dd-uu HH-mm-ss") ;
String output = ldt.format(fOut );
18年1月23日12-34-56
你的两种格式是可怕的,出于多种原因。
当序列化日期时间值时,尽可能使用标准ISO 8601格式。它们被设计成实用,易于通过机器进行分析,便于人类跨文化阅读。
对于日期时间(例如您的日期时间),中间的T
将日期部分与时间部分分隔开。
2018-01-23T12:34:56
的java.time框架是建立在Java 8和更高版本。这些类代替了日期 - 时间类legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time项目,现在在maintenance mode,建议迁移到java.time类。请参阅Oracle Tutorial。并搜索堆栈溢出了很多例子和解释。规格是JSR 310。
从何处获取java.time类?
的ThreeTen-Extra项目与其他类扩展java.time。这个项目是未来可能增加java.time的一个试验场。您可以在这里找到一些有用的类,如Interval
,YearWeek
,YearQuarter
和more。
温柔的请求。请您举一个例子。 – Manu 2010-02-23 14:25:08
他已经做了? – BalusC 2010-02-23 14:28:10
我想他是指使用乔达时间的例子... – Fortega 2010-02-23 14:41:18