嗨,我想將當前日期轉換爲這種格式YYYY-MM-DD
。但是,它會將日期轉換爲String
格式,但我想將其轉換回Date
格式。那麼有誰能就此提出建議?如何將日期轉換爲字符串並再次日期?
這是到目前爲止我的代碼
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String datestring = dateFormat.format(date);
嗨,我想將當前日期轉換爲這種格式YYYY-MM-DD
。但是,它會將日期轉換爲String
格式,但我想將其轉換回Date
格式。那麼有誰能就此提出建議?如何將日期轉換爲字符串並再次日期?
這是到目前爲止我的代碼
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String datestring = dateFormat.format(date);
試試這個:
String DATE_FORMAT_NOW = "yyyy-MM-dd";
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
String stringDate = sdf.format(date);
try {
Date date2 = sdf.parse(stringDate);
} catch(ParseException e){
//Exception handling
} catch(Exception e){
//handle exception
}
使用此功能
public String convertDateToString(Date date, String format) {
String dateStr = null;
DateFormat df = new SimpleDateFormat(format);
try {
dateStr = df.format(date);
} catch (Exception ex) {
System.out.println(ex);
}
return dateStr;
}
供參考,雖然正確答案現在過時了。這裏使用的類是麻煩的和有缺陷的,現在被現代java.time類取代。 –
使用DateFormat#parse(String)
:
Date date = dateFormat.parse("2013-10-22");
thks!但我想自動生成今天的日期,而不是輸入我自己的字符串。我怎樣才能做到這一點? – ayampenyet
新的Date實例具有當前日期,只需執行''new Date()''。 – qqilihq
你已經在代碼中獲得了變量'datestring'。只需使用它而不是qqilihq示例中的常量。 –
試試這個功能
public static Date StringToDate(String strDate) throws ModuleException {
Date dtReturn = null;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
try {
dtReturn = simpleDateFormat.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
return dtReturn;
}
轉換日期爲字符串。而字符串轉換爲日期再次
public Date convertStringToDate(String dateStr, String format) {
Date date = null;
DateFormat df = new SimpleDateFormat(format);
try {
date = df.parse(dateStr);
} catch (Exception ex) {
System.out.println(ex);
}
return date;
}
該線程
Convert java.util.Date to String
轉換日期字符串檢查和轉換字符串到日期試試這個,
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class StringToDate
{
public static void main(String[] args) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
String strDate = "14/03/2003 08:05:10";
System.out.println("Date - " + sdf.parse(strDate));
}
}
問題的代碼和本答案都過時了,使用了現在已經存在的麻煩的日期 - 時間類,取而代之的是Java 8,Java 9和更高版本中內置的現代java.time類。 –
如何將日期轉換爲字符串並再次日期?
LocalDate.now().toString()
2017年1月23日
......還有......
LocalDate.parse("2017-01-23")
問題採用捆綁麻煩的舊日期,時間類最早的Java版本。那些類現在是遺留的,取而代之的是內置於Java 8,Java 9和更高版本中的java.time類。
確定今天的日期需要一個時區。對於任何特定的時刻,日期在全球各地按照地區而不同。
如果不是由您提供,那麼將應用您的JVM的當前默認時區。該默認值可以在運行時隨時更改,因此不可靠。我建議你總是指定你想要的/預期的時區。
ZoneId z = ZoneId.of("America/Montreal") ;
LocalDate ld = LocalDate.now(z) ;
你想要的YYYY-MM-DD的格式恰好符合ISO 8601標準。
解析/生成字符串時,該標準恰好被java.time類默認使用。因此,您只需撥打LocalDate::parse
和LocalDate::toString
即可,而無需指定格式模式。
String s = ld.toString() ;
爲了解析:
LocalDate ld = LocalDate.parse(s) ;
的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。
您能否指出一個備份您的「源代碼可以在運行時隨時更改,因此不可靠」的源代碼。要求?我發現這非常令人驚訝。 – omajid
@omajid ['TimeZone.setDefault'](https://docs.oracle.com/javase/9/docs/api/java/util/TimeZone.html#setDefault-java.util.TimeZone-)可能會被調用*運行期間JVM中的任何應用程序的任何線程中的任何代碼。該更改立即影響該JVM中所有應用程序的所有線程中運行的所有其他代碼。作爲一名程序員,相當難以預測,無法控制。始終通過傳遞可選['ZoneId'](https://docs.oracle.com/javase/9/docs/api/java/time/ZoneId.html)參數來明確指定所需的/預期的時區。 –
可能這會有所幫助[Java字符串到日期轉換] [1] [1]:http://stackoverflow.com/questions/4216745/java-string-to-date-conversion –
日期對象沒有格式,只有它的字符串表示形式。 –
國際海事組織,日期應始終存儲爲日期和解析自己的日期不是一個好習慣。日期格式應該用於用戶交互,而不是用於存儲數據本身。如果你想以某種方式以編程方式將日期轉換爲字符串,使用序列化要方便得多。 – Danstahr