2016-03-10 571 views
-2

我需要得到的當前時間的日期格式如下「YYYY-MM-dd'T'HH:MM:SS」格式的日期和返回日期,而不是字符串

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 

我知道如何使用SimpleDateFormat格式化日期。最後我得到一個字符串。但我需要得到格式化日期,而不是字符串,據我所知,我不能將字符串轉換回日期,我可以嗎?

如果我只是返回的日期,它是一個日期,但它的格式不正確:

Timestamp ts = new Timestamp(new Date().getTime()); 

編輯: 不幸的是我需要的結果作爲一個日期,而不是字符串,所以我不能使用sdf.format(New Date()。getTime()),因爲這會返回一個String。 此外,我需要返回的日期是當前時間的日期,而不是來自靜態字符串。我希望澄清

+4

的問題並沒有真正意義:一'Date'只是一個時間點,它沒有格式。 – Henry

+1

'new Date()'已經是'Date',而不是'String'。 –

+1

可能重複的[如何將字符串轉換爲日期格式在Android](http://stackoverflow.com/questions/25460965/how-to-convert-string-to-date-format-in-android) – Tom

回答

0

應該可以使用一種解析方法。使用intellisense檢查你的對象有什麼方法:)或者只是看看javadoc,大多數IDE有一個選項來打開java文件。

String dateString = "2016-01-01T00:00:00"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
Date d = sdf.parse(dateString); 
+0

感謝您的回答馬丁。在你的解決方案中,我應該使用 Long date1 =(new Date()。getTime()); String dateString = date1.toString();作爲格式化之前的初始字符串的 ? – Don

+0

如果你只想爲當前時間使用'date'對象,那麼爲什麼不使用'Date d = new Date()',那麼你已經擁有了Date對象呢?我不確定你的問題是什麼。 'Date'的'toString()'方法沒有按照你所請求的模式格式化,所以這是行不通的。 –

+0

也許我錯過了一些東西,包括你在內的所有答案都是從一個靜態的字符串日期開始的,而我需要當前的時間。我如何使用sdf.parse(dateString); dateString是當前時間的字符串?對不起,如果我錯了某處 – Don

0

試試這個:如果你想StringDate轉換

LocalDateTime ldt = Instant.now() 
        .atZone(ZoneId.systemDefault()) 
        .toLocalDateTime() 
1

嘗試這種方式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 

Date date = sdf.parse("2016-03-10...."); 
0

,您需要使用DateFormatString格式解析Date。這是一個例子 -

String target = "2016-03-10T15:54:49"; 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
    Date result = df.parse(target); 
0
public String getCurrentDateTime() { 
     DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     // get current date time with Date() 
     Date date = new Date(); 
     return dateFormat.format(date); 

    } 
0

時間格式應該是相同的,否則得到的時間解析器異常來

String dateString = "03/26/2012 11:49:00 AM"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); 
    Date convertedDate = new Date(); 
    try { 
     convertedDate = dateFormat.parse(dateString); 
    } catch t(ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    System.out.println(convertedDate); 
0

使用我的代碼,我希望這對你的作品......

SimpleDateFormat dateFormat= new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH); 
String str_date=dateFormat.format(new Date()); 
0

是u能:) 您可以將字符串轉換回日期。

此方法將幫助您:Date parse(String date);

它返回Date類對象。您只需在此方法中以字符串格式傳遞日期。

import java.text.*; 
import java.util.*; 

class Test { 
    public static void main(String[] args) throws Throwable { 

    String date = "2016-03-10T04:05:00"; 

    SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 

    Date d = s.parse(date); 

    System.out.println(d); 
    } 
} 
0

但我需要格式化的日期,而不是字符串,而據我所知,我不能一個字符串轉換回一個日期,可以嗎?

由於您知道日期時間格式,所以從日期格式到字符串格式實際上很容易,反之亦然。我會親自做一個單獨的類與字符串到日期和日期到字符串的轉換方法:

public class DateConverter{ 

    public static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 

    public static Date convertStringToDate(final String str){ 
     try{ 
      return DATE_FORMAT.parse(str); 
     } catch(Exception ex){ 
      //TODO: Log exception 
      return null; 
     } 
    } 

    public static String convertDateToString(final Date date){ 
     try{ 
      return DATE_FORMAT.format(date); 
     } catch(Exception ex){ 
      //TODO: Log exception 
      return null; 
     } 
    } 
} 

用法:

// Current date-time: 
Date date = new Date(); 

// Convert the date to a String and print it 
String formattedDate = DateConverter.convertDateToString(date); 
System.out.println(formattedDate); 

// Somewhere else in the code we have a String date and want to convert it back into a Date-object: 
Date convertedDate = DateConverter.convertStringToDate(formattedDate); 
+1

嗨凱文,這看起來很有前途,不幸的是我不能訪問帶DateTimeFormat的getFormat方法。 我已經導入:import org.joda.time.format.DateTimeFormat; – Don

+0

@唐啊,我很抱歉,我正在使用我正在處理的項目中的相同代碼,但是我必須將GWT用於大多數默認的Java方法/類。(PS /不相關:導入我使用的是'import com.google.gwt.i18n.client.DateTimeFormat;')我編輯了我的答案,所以它現在使用'SimpleDateFormat'來代替。其餘的代碼和用法應該仍然是一樣的。 –

+0

凱文,您好,感謝您的編輯,我現在可以使用您的課程。不幸的是,有一些錯誤,這裏是我登錄: formattedDate == 2016-03-11T09:20:10.650 convertedDate == Fri Mar 11 09:20:10 CET 2016 所以最終的輸出沒有格式化根據所需的格式。也許這是因爲它被格式化了兩次,所以它會回到最初的默認格式? – Don

相關問題