[英]Compare two strings to Date in java
我有一個約會,我必須檢查是星期六還是星期天。 我正在進行嗎?
Calendar gcal = new GregorianCalendar();
DateFormat dateFormat = new SimpleDateFormat("EEEE");
Date currentDate = gcal.getTime();
String strDate = dateFormat.format(currentDate);
if (!"Saturday".equals(strDate)) {
}
它的工作正常。 但我不能比較兩個字符串,
if (!"Saturday" || "Sunday".equals(strDate)) {}
如果約會是星期六或星期日,我必須跳過循環....提前感謝...
無需創建/格式化Date
對象,請使用Calendar
方法:
Calendar gcal = new GregorianCalendar();
if (gcal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && gcal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
}
如果日期是星期六或星期日,我必須跳過循環。
那應該是
if (!("Saturday".equals(strDate) || "Sunday".equals(strDate)) {
}
今天是星期六嗎?
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.getDayOfWeek()
.equals( DayOfWeek.SATURDAY )
我正在進行嗎?
不。您正在使用已被java.time類取代的麻煩的舊日期時間類。
另一個問題是隱含地依賴於默認時區。 最好明確指定您的預期時區。 時區確定日期,日期確定星期幾,因此時區至關重要。
另一個問題是你不必要地從Calendar
轉換為Date
。 但最好完全避免這些類。
DayOfWeek
DayOfWeek
枚舉定義了七個對象,一個星期中的每一天。
您應該在代碼周圍傳遞這些對象而不是字符串。 請注意,在下面的代碼中我們根本不使用字符串。
請注意,這些DayOfWeek
對象不是字符串。 它們是真實的物體,提供了幾種方法。 這些方法包括toString
,它以英文生成硬編碼的String,全部為大寫。 方法getDisplayName
生成以各種人類語言自動本地化的星期幾的名稱。
Java中的枚舉功能比其他語言中常見的功能強大且實用。 請參閱Oracle教程 。
LocalDate
LocalDate
類表示沒有時間且沒有時區的僅日期值。
時區對於確定日期至關重要。 對於任何給定的時刻,日期在全球范圍內因地區而異。 例如, 法國巴黎午夜過后幾分鍾是新的一天,而在魁北克蒙特利爾仍然是“昨天”。
以continent/region
的格式指定適當的時區名稱 ,例如America/Montreal
, Africa/Casablanca
或Pacific/Auckland
。 切勿使用3-4字母縮寫,例如EST
或IST
因為它們不是真正的時區,不是標准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
today.toString():2017-02-27
詢問LocalDate
對象的DayOfWeek
。
DayOfWeek dow = today.getDayOfWeek();
dow.toString():星期一
與您的目標星期相比。
Boolean isTodaySaturday = dow.equals( DayOfWeek.SATURDAY );
isTodaySaturday.toString():false
在IdeOne.com上試用此代碼 。
看到類似的問題: 如何在Java 8中向LocalDate添加天數時跳過周末?
java.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊遺留日期時間類,如java.util.Date
, Calendar
和SimpleDateFormat
。
現在處於維護模式的Joda-Time項目建議遷移到java.time類。
要了解更多信息,請參閱Oracle教程 。 並搜索Stack Overflow以獲取許多示例和解釋。 規范是JSR 310 。
從哪里獲取java.time類?
ThreeTen-Extra項目使用其他類擴展了java.time。 該項目是未來可能添加到java.time的試驗場。 您可以在這里找到一些有用的類,比如Interval
, YearWeek
, YearQuarter
,和更多 。
或者:
if (!strDate.matches("Saturday|Sunday")) {
}
但它更慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.