[英]Java Types: What is the format for representing a variable of type `Date`? `Time`?
我有一個變量:
Date date;
Time time;
和方法:
MyDateMethod(Date date){
//do stuff
}
MyTimeMethod(Time time){
//do stuff
}
我嘗試通過以下調用使用MyDateMethod()
:
MyDateMethod(1995-03-7);
我收到一條錯誤消息,說我期望它為類型Time
時提供了int
類型。
我還嘗試通過以下調用使用MyTimeMethod()
:
MyTimeMethod(03:04:55);
我收到一條錯誤消息,指出Type mismatch: Cannot convert type int to boolean.
放入這些不同類型的變量的格式是什么? Date
顯然不是xxxx-xx-xx
而Time
顯然不是xx:xx:xx
。
有幾種選擇,
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d = sdf.parse("1995-03-07");
System.out.println(d);
} catch (ParseException e) {
e.printStackTrace();
}
輸出是
Tue Mar 07 00:00:00 EST 1995
或者,您可以使用
// -1 because January is 0... I didn't design it!
Calendar c = new GregorianCalendar(1995, 3 - 1, 7);
System.out.println(c.getTime());
具有與以前相同的輸出。
您需要SimpleDateFormat。 需要按日期格式進行初始化。
像這樣使用它:
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy/MM/dd HH:mm:ss", Locale.getDefault());
接着:
Date date = (Date) dateFormat.parse("2014/04/02 22:22:22");
看一下DateFormat ,尤其是SimpleDateFormat 。
您的示例將使用SimpleDateFormat
這樣編碼:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("1995-03-07")
(我假設您在這里還有幾天,如果沒有,則需要將MM和dd互換)。
Java不支持Date
文字。 您需要使用構造函數或靜態工廠方法來獲取此類的實例。
1995-03-07
返回1985
因為這里有三個int
文字,並且連字符被解釋為減法運算符。
看一下Date
類和DateFormat
類的文檔
您可以通過以下方式表示這些值:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("1995-03-07");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
Date time = timeFormat.parse("03:46:16");
您可以使用相同格式的對象來執行相反的轉換。 請注意,這些Date
實例代表一個特定的時間,精確到毫秒。 在內部,這表示為格林尼治標准時間1970年1月1日00:00:00以來的毫秒數
該API並不是Java中最漂亮的API,通過查看文檔,您可以了解到它進行了多少更改。 只看不推薦使用的方法的數量。
建議改用Joda-Time庫 。
另外,如果您可以選擇使用Java 8,則可以嘗試使用隨附的全新API。
而且正如他所說,舊的捆綁在一起的java.util.Date和.Calendar類非常麻煩。 避免他們。 在Java 8中使用Joda-Time庫或新的java.time包。
在Joda-Time中:
LocalDate
類。 LocalTime
類。 DateTime
類,該類在一個對象中都跟蹤日期,時間和時區。 一個DateTime對象不包含文本。 沒有字符串。 如果需要字符串表示形式,請使用格式化程序對象生成一個。 在StackOverflow中搜索許多示例。
Joda-Time內置了格式化程序,用於明智且日益普及的ISO 8601標准。 例如,DateTime類上的toString
實現產生這樣的String……
2014-04-01T20:17:35-08:00
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.