2014-04-10 63 views
1

我得到日期字符串爲2014-01-11-T00:00:00Z 我想將此日期轉換爲20140111即YYYYMMDD它應該是一個字符串。來自ISO兼容日期的自定義字符串

以上實現的任何標準方法/函數?

+0

你有特定的編程語言嗎? .NET? Python?...對於PHP來看看date()函數 – Goufalite

+0

糟糕對不起,我忘了提及它的Java。 –

+2

沒關係 - 你用'java'標記了它 – drkunibar

回答

0

藉此

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateFormat { 

    public static void main(String[] args) throws ParseException { 
     SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd-'T'HH:mm:ss'Z'"); 
     Date inDate = inFormat.parse("2014-01-11-T00:00:00Z"); 

     SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMdd"); 
     String output = outFormat.format(inDate); 

     System.out.println("Date: " + output); 

    } 
} 
0

這裏的改進版本給出的答案被@drkunibar:

SimpleDateFormat inFormat = new SimpleDateFormat("yyyy-MM-dd-'T'HH:mm:ss'Z'"); 
inFormat.setTimeZone(TimeZone.getTimeZone("GMT")); // Z denotes UTC in ISO-8601 
Date inDate = inFormat.parse("2014-01-11-T00:00:00Z"); 

SimpleDateFormat outFormat = new SimpleDateFormat("yyyyMMdd"); 
outFormat.setTimeZone(TimeZone.getTimeZone("...")); // set your timezone explicitly! 
String output = outFormat.format(inDate); 

System.out.println("Date: " + output); 

注意YYYYMMDD格式也通過了ISO-8601兼容(所謂的基本日曆日期)。你必須問自己的問題是你想獲得輸出的時區。如果在UTC中,您也必須設置「GMT」。在沒有設置時區的情況下,可能會發生這樣的情況,即您的輸出日期與輸入的UTC日期不同,取決於您的默認系統時區(例如,美國比UTC晚幾個小時,在此情況下爲UTC午夜之前的一個日曆日)。

0

喬達時間

這個日期時間的工作是與喬達時間2.3庫要容易得多。

String input = "2014-01-11T00:00:00Z"; // In standard ISO 8601 format. 
DateTime dateTime = new DateTime(input, DateTimeZone.UTC); // Parse string into date-time object. 
DateTimeFormatter formatter = ISODateTimeFormat.basicDate(); // Factory to make a formatter. 
String output = formatter.print(dateTime); // Generate string from date-Time object. 
相關問題