2012-05-15 95 views
2

我現在有一個腳本,總是以AM PM格式傳遞時間。但是現在我不知道如何設置日曆,因爲它只接受24小時格式的代碼寫入方式。我如何將時間轉換爲24小時制或輸入12小時制?Android日曆設置上午或下午時間不是24小時

  calendar.set(Calendar.HOUR_OF_DAY, HourValue); 
     calendar.set(Calendar.MINUTE, MinuteValue); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.add(Calendar.MINUTE, -356); 

回答

2

0分及1對於PM Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month); c.set(Calendar.DAY_OF_MONTH, day); c.set(Calendar.AM_PM, 1); c.set(Calendar.HOUR, hour); c.set(Calendar.MINUTE, minute); c.set(Calendar.SECOND, 00); c.set(Calendar.MILLISECOND, 00);

1
int am_pm=c.get(Calendar.AM_PM); 
String time=c.HOUR + ((am_pm==Calendar.AM)?"am":"pm")) 

你可以試試以上。

0

TL;博士

ZonedDateTime.of( 
    LocalDate.now(ZoneId.of("Pacific/Auckland")) // Determine today’s date for a given region. 
     .plusDays(1) ,        // Determine day-after, tomorrow. 
    LocalTime.parse(         // Parse string with AM/PM into `LocalTime` object. 
     "6:51:35 PM" , 
     DateTimeFormatter.ofPattern("h:m:s a").withLocale(Locale.US) 
    ) ,            // Combine date with time-of-day… 
    ZoneId.of("Pacific/Auckland")     // …and zone… 
)              // …to produce a `ZonedDateTime`, a point on the timeline. 
.toString()           // Generate a String in standard ISO 8601 format, wisely extended by appending the name of the time zone in square brackets. 

2018-02-02T18:51:35 + 13:00 [太平洋/奧克蘭]

java.time

解析傳入以12小時的格式將字符串轉換爲LocalTime對象。

String input = "6:51:35 PM" ; 
DateTimeFormatter f = DateTimeFormatter.ofPattern("h:m:s a").withLocale(Locale.US) ; 

LocalTime lt = LocalTime.parse(input , f) ; 

要設置鬧鐘,您需要結合日期以及時區來確定實際時刻。

LocalDate類代表沒有時間和沒有時區的僅有日期的值。

時區對確定日期至關重要。對於任何特定的時刻,日期因地區而異。例如,Paris France午夜後幾分鐘是新的一天,而在Montréal Québec仍然是「昨天」。

如果未指定時區,則JVM將隱式應用其當前默認時區。該默認值可能隨時改變,因此您的結果可能會有所不同。最好明確指定所需的/預期的時區作爲參數。

continent/region的格式指定一個proper time zone name,如America/MontrealAfrica/Casablanca,或Pacific/Auckland。切勿使用3-4字母縮寫,如ESTIST,因爲它們是而不是真正的時區,不是標準化的,甚至不是唯一的(!)。

ZoneId z = ZoneId.of("America/Montreal") ; 
LocalDate today = LocalDate.now(z) ; 

如果要使用JVM的當前默認時區,請求它並作爲參數傳遞。如果省略,則隱式應用JVM的當前默認值。最好是明確的。

ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone. 

通過增加一天來確定明天。

LocalDate tomorrow = today.plusDays(1) ; 

應用所需的時區的時間 - 日期和以產生ZonedDateTime。如果由於諸如夏令時(DST)之類的異常,您的時間在該地區的該日期無效,該課程將自動進行調整。閱讀文檔以確保您理解並同意這些調整的行爲。

ZonedDateTime zdt = ZonedDateTime.of(tomorrow , lt , z) ; // Get a specific moment in time given a particular date, time-of-day, and zone. 

關於java.time

java.time框架是建立在Java 8和更高版本。這些類代替了日期時間類legacy,如java.util.Date,Calendar,& SimpleDateFormat

Joda-Time項目,現在在maintenance mode,建議遷移到java.time類。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310

從何處獲取java.time類?

相關問題