2013-06-03 68 views
-2

我有一行C#代碼,我嘗試在Java中進行復制。代碼如下所示。在Java中轉換日期時間格式

n.InnerText = DateTime.Parse(n.InnerText).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"); 

意圖是將xml上下文中已存在的DateTime替換爲一個代表世界時的值。

我試圖使用

node.setTextContent = Date.parse(node.getTextContent()) 

,但我無法繼續由於Date.parse()被廢棄。我閱讀了Eclipse中的註釋並按照建議嘗試了DateFormat,但DateFormat沒有解析方法。

有人可以建議一個解決方案,我的問題,不使用任何第三方庫?

+0

已棄用。從JDK version 1.1開始,由DateFormat.parse(String s)取代。 – LiverpoolFTW

+0

@Johnathon Ender,檢查http://stackoverflow.com/a/9886992/1160207並參考http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html –

回答

5

您可以使用:

DateFormat format = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ssZ"); 
Date date = format.parse(myString); 

一定要檢查的語言環境,如果是適當的,並檢查該字段是相同的(如我不知道你打算解析什麼,我只是複製它們)。

(例如 「T」 不存在。)

0

你的意思是像這樣的:

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

public class DateFormat{ 
    public static void main(String[] args){ 

    Date date=new Date(); 
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 

    String yourDate=sdf.format(date); 
    System.out.println(yourDate); 

    } 
} 
3
Date d = new Date(); 
    (java.text) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
    sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); 
    String formatted = sdf.format(d); 
0

其他的答案是過時的,使用舊的遺留類。

java.time

的java.time框架構建在Java 8和更高版本取代了麻煩舊日期時間類。

ISO 8601

你輸入的字符串恰好是標準的ISO 8601格式。

在解析/生成日期時間值的字符串表示時,java.time類默認使用ISO 8601格式。所以不需要指定格式化模式。

Instant代表UTC的時間軸上的一個時刻,分辨率爲nanoseconds

Instant instant = Instant.parse("2016-04-29T22:04:07Z");