2016-11-09 59 views
1

我想要使用格式化程序將日期從一種格式轉換爲另一種格式。 但不知何故,這看起來沒有工作。轉換日期到給定的格式不起作用

以下是我的代碼

Date today = Calendar.getInstance().getTime(); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.ms"); 
String folderName = formatter.format(today); 
Date date = formatter.parse(folderName); 
System.out.println("Folder date = " + date); //This prints Wed Nov 09 06:05:57 IST 2016 

我需要YYYY-MM-DD HH要打印日期:MM:ss.ms格式。 這是我需要它是2016-11-09 06:50:25.5025而不是Wed Wed 09 06:05:57 IST 2016 在文件夾名稱它是在正確的格式,但是當我再次轉換爲日期格式更改。 你能讓我知道我失蹤了嗎?

+2

「ms」??嘗試「SSS」!請參閱https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html – Fildor

+0

僅供參考,麻煩的舊日期時間類,例如['java.util.Date'](https: //docs.oracle.com/javase/8/docs/api/java/util/Date.html),['java.util.Calendar'](https://docs.oracle.com/javase/8/docs /api/java/util/Calendar.html)和'java.text.SimpleTextFormat'現在是[legacy](https://en.wikipedia.org/wiki/Legacy_system),由[java.time]代替( https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)類。請參見[Oracle教程](https://docs.oracle.com/javase/tutorial/datetime/TOC.html)。 –

回答

3

你做了兩個錯誤:

的格式(檢查here爲格式的完整列表)是yyyy-MM-dd hh:mm:ss.SSS

而且你需要打印字符串,而不是日期。

Date today = Calendar.getInstance().getTime(); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); 
String folderName = formatter.format(today); 
System.out.println("Folder date = " + folderName); 
+0

當我以這種方式打印它的作品。 但我需要日期對象來保存該格式。 這可能嗎? – Sachin

+1

@Sachin日期對象**沒有格式**。這是格式化程序的用途。 – Fildor

+0

日期保存值,而不是格式。如果您需要打印它,您需要像使用DateFormat一樣將其轉換爲字符串。 –

1

使用java.time

您正在使用舊麻煩日期時間類,現在的傳統,由java.time類取代。

ZoneId z = ZoneId.of("Asia/Kolkata") ; 
ZonedDateTime now = ZonedDateTime.now(z) ; 

now.toString():2016-11-09T06:50:25.502 + 05:30 [亞/加爾各答]

生成的字符串。您所需的格式接近標準ISO 8601格式,只需在中間用空格替換T即可。 java.time類瞭解ISO 8601格式。

DateTimeFormatter f = DateTimeFormatter.ISO_LOCAL_DATE_TIME ; 
String output = now.format(f).replace("T" , " ") ; 

2016年11月9日06:50:25.502


關於java.time

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,YearQuartermore