[英]how to convert timestamp string to 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
不是線程安全的,因此您需要為每個線程創建一個或使用synchronized
塊序列化對它的訪問。
java.time.LocalDateTime.parse(
"012318123456" ,
DateTimeFormatter.ofPattern( "MMdduuHHmmss" )
).format(
DateTimeFormatter.ofPattern( "MM-dd-uu HH-mm-ss" )
)
01-23-18 12-34-56
現代方法使用java.time類。
定義格式模式以匹配輸入字符串。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMdduuHHmmss" ) ;
您的兩位數年份將被解釋為21世紀(20xx)。
解析為LocalDateTime
因為您的輸入字符串缺少任何時區指示符或與UTC的偏移量。
LocalDateTime ldt = LocalDateTime.parse( "012318123456" , f ) ;
ldt.toString():2018-01-23T12:34:56
生成所需格式的字符串。
DateTimeFormatter fOut = DateTimeFormatter.ofPattern( "MM-dd-uu HH-mm-ss" ) ;
String output = ldt.format( fOut );
01-23-18 12-34-56
由於多種原因,您的兩種格式都很糟糕。
序列化日期時間值時,請盡可能使用標准ISO 8601格式。 它們設計實用,易於通過機器解析,易於人類跨文化閱讀。
對於諸如你的日期時間,中間的T
將日期部分與時間部分分開。
2018-01-23T12:34:56
java.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊遺留日期時間類,如java.util.Date
, Calendar
和SimpleDateFormat
。
現在處於維護模式的Joda-Time項目建議遷移到java.time類。
要了解更多信息,請參閱Oracle教程 。 並搜索Stack Overflow以獲取許多示例和解釋。 規范是JSR 310 。
從哪里獲取java.time類?
ThreeTen-Extra項目使用其他類擴展了java.time。 該項目是未來可能添加到java.time的試驗場。 您可以在這里找到一些有用的類,比如Interval
, YearWeek
, YearQuarter
,和更多 。
使用帶有適當格式字符串的SimpleDateFormat (小心使用正確的格式字母,大寫和小寫有不同的含義!)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.