[英]converting java Date to day
我正在一個項目中,我在Java中創建了2個變量startdate
, Date
類型的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 8及更高版本中。 這些類取代了麻煩的舊日期時間類,例如java.util.Date
, .Calendar
和java.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
類表示時區。 請注意,我們絕不使用EST
或IST
等主流媒體中常見的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.