簡體   English   中英

將Java Date轉換為day

[英]converting java Date to day

我正在一個項目中,我在Java中創建了2個變量startdateDate類型的enddate
如您所知,Java中的日期包括日期和時間。
但是在查詢時,我只需要startdate變量的日期(特別是日期)部分。
我嘗試了startdate.getday()但它已被棄用,我應該改用Calendar.get(Calendar.DAY_OF_MONTH)
但是我不知道如何使用它,在所有地方都使用谷歌搜索,解決方案是獲取當前日期。

如果startdate包含(30/01/1988 02:30:54),我想做些什么,這樣我就可以得到30/01/1988,或者如果可能,則分別在字符串/整數變量中得到30和01和1988。

 Calendar cal = Calendar.getInstance();
 cal.setTime(startdate);
 cal.get(Calendar.DAY_OF_MONTH);

java.util.Date類是舊的數據時間類的一部分,這些類的設計不完善,令人困惑且麻煩。 避免他們。

而是使用java.time類。

java.time

java.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊日期時間類,例如java.util.Date.Calendarjava.text.SimpleDateFormat Joda-Time小組還建議遷移到java.time。

要了解更多信息,請參見Oracle教程 並在Stack Overflow中搜索許多示例和說明。

多的java.time功能后移植到Java 6和7在ThreeTen-反向移植並且還適於在到Android ThreeTenABP

Instant

第一步是走出舊班級,進入新班級。 為了進行轉換,新方法已添加到舊類中。 現在, java.util.Date類提供了toInstant Instant是UTC時間線上的一個時刻,其分辨率高達納秒。

Instant instant = myUtilDate.toInstant();

時區

確定日期需要一個時區。 在任何給定的時刻,日期都會隨時區在全球范圍內變化。 巴黎午夜過后的幾分鍾仍然是蒙特利爾的“昨天”。

ZoneId類表示時區。 請注意,我們絕不使用ESTIST等主流媒體中常見的3-4個字母的縮寫。 這些不是真實的時區,不是標准化的,甚至不是唯一的(!)。 而是使用tz數據庫中定義的正確時區 ,格式為continent/region

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( zoneId );

為您需要的部件詢問ZonedDateTime

int year = zdt.getYear();
int month = zdt.getMonthValue(); // Or handy Month enum…  zdt.getMonth();
int dayOfMonth = zdt.getDayOfMonth();

LocalDate

如果您要進行大量工作而又想忽略時間和時區,請使用LocalDate類。

LocalDate localDate = zdt.toLocalDate();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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