問題和其他答案正在使用過時的類。
避免舊日期,時間類
老java.util.Date/.Calendar,SimpleDateFormat的,而這種與Java的早期版本中捆綁已被證明是設計不當,令人費解,麻煩。避免它們。
java.time
java.time框架內置於Java 8及更高版本。 Backports可用於Java 6和Android。
這些新課程是一個巨大的改進了舊的日期時間類。搜索堆棧溢出瞭解更多討論和示例。
對於不包含日期時間的僅限日期的值,請使用LocalDate
類。
指定人類語言的Locale
來解釋月份名稱。如果省略,則隱式應用JVM的當前默認值Locale
。最好明確指定所需的/預期的語言環境。例如,Locale.US
或Locale.ENGLISH
或new Locale("en" , "IN")
,無論適合您的傳入數據。
String input = "25 Mar 2016";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy");
formatter = formatter.withLocale(Locale.ENGLISH); // Specify the language to interpret name-of-month.
LocalDate localDate = LocalDate.parse(input , formatter);
爲了得到一個日期 - 時間與一天的第一刻起,指定一個時區來創建一個ZonedDateTime
。
ZoneId zoneId = ZoneId.of("Asia/Kolkata"); // Or "Europe/Paris", "America/Montreal", and such.
ZonedDateTime zdt = localDate.atStartOfDay(zoneId);
永不假定當天開始的時間00:00:00.0
。夏令時(DST)等異常意味着該日可能會在另一個時間開始。讓java.time通過調用atStartOfDay
來處理這些細節。
如果你將它轉換爲Date對象,那麼你也有時間。爲什麼當你首先想要字符串時,將字符串轉換爲日期? – user2004685
無論我得到的時間,但我需要在IST格式輸出是UTC格式,我不需要。我想在日期,因爲我想使用日期date.getTime()方法。 –
如果我正確理解您的問題,您希望控制檯以'IST'格式而不是'UTC'打印日期。在下面檢查我的答案。 – user2004685