簡體   English   中英

如何在Java中將日歷設置為特定日期和時間

[英]How to set Calender to Particular date and time in java

我正在使用Java的Calender類..這里將日歷設置為星期幾和時間。現在根據我的需要,我想將它設置為月份和時間的日期,例如應該將日歷設置為月份的第10個,時間應該設置為上午10點。但是我沒辦法..

這是我的代碼。

Calendar date = Calendar.getInstance();
    date.set(
            Calendar.DAY_OF_WEEK,
            Calendar.TUESDAY);
    date.set(Calendar.HOUR, 10);
    date.set(Calendar.MINUTE, 58);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);

請幫助我..預先感謝..

如果要設置月份的日期,則可以互換使用二者之一。

date.set(Calendar.DAY_OF_MONTH, 10); // Synonym of DATE
date.set(Calendar.DATE, 10); // Synonym of DAY_OF_MONTH

您的代碼有效,唯一的不同是您的設置日期。 但是一天中的哪一周呢?

下面的代碼演示如何設置日歷的日期和時間。

Calendar date = Calendar.getInstance();
    long today = date.getTimeInMillis();
    date.set(
            Calendar.DATE,11);
    date.set(Calendar.HOUR, 10);
    date.set(Calendar.MINUTE, 58);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
    date.set(Calendar.MONTH, 10);
    date.set(Calendar.YEAR, 2013);
    date.setTimeZone(TimeZone.getDefault());

    long lastday = date.getTimeInMillis();
    System.out.println(date.getTimeInMillis());

    long diff = today - lastday;
    diff = ((diff/1000)/360);
    System.out.println("Hours diff :"+diff);

tl; dr

ZonedDateTime.of( 2016 , 9 , 10 , 10 , 0 , 0 , 0 , ZoneId.of( "Europe/Paris" ) )

細節

Ɍ.Ɉ接受的答案是正確的。

java.time

這是執行相同操作的方法,但是使用現代的java.time類代替了麻煩的舊舊日期時間類。

http://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html類表示特定時區中時間軸上的時刻,分辨率為納秒 用所有特定的年,月,時等參數實例化: of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone)

ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = ZonedDateTime.of( 2016 , 9 , 10 , 10 , 0 , 0 , 0 , z );

請參閱標准ISO 8601格式的該值的字符串表示形式,該表示形式通過在方括號中附加時區名稱來擴展。

String output = zdt.toString();

2016-09-10T10:00:00 + 02:00 [歐洲/巴黎]

如果要以其他格式生成字符串,請在Stack Overflow中搜索DateTimeFormatter

關於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,反向移植 ,並進一步適應的AndroidThreeTenABP (見如何使用...... )。

ThreeTen-Extra項目使用其他類擴展了java.time。 該項目為將來可能在java.time中添加內容提供了一個試驗場。 您可能會在這里找到一些有用的類,例如IntervalYearWeekYearQuarter等。

暫無
暫無

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

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