簡體   English   中英

Java類型:表示類型為Date的變量的格式是什么? `Time`?

[英]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-xxTime顯然不是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文字,並且連字符被解釋為減法運算符。

看一下DateDateFormat的文檔

您可以通過以下方式表示這些值:

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中沒有日期時間文字

而且正如他所說,舊的捆綁在一起的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM