2012-06-28 22 views
14

java.util.Date örneğindeki toString() sonucu içeren bir String sahibiyim. Bu değeri bir Date nesnesine nasıl ayrıştırabilirim?Bir java ayrıştırma Tarih: toString()

Java docs toString() formunun bir String bu Date nesnesini dönüştürür söylemek:

dow mon dd hh:mm:ss zzz yyyy 

ama tabii

"dow" veya "mon" diye bir biçim etiketi yoktur.

Lütfen birisi bana bu sorunla yardımcı olabilir. Maalesef, toString() numaralı telefonun kontrolümün dışında bir kod parçası olduğunu unutmayın.

+2

olası yinelenen aşağıdaki bağlantıyı başvurabilir [yeni tarihi çıkışını ayrıştırmak nasıl(). ToString()] (http : //stackoverflow.com/questions/4713825/how-to-parse-output-of-new-date-tostring) –

cevap

27

date.toString() yerine SimpleDateFormat kullanmalısınız. Bu şekilde kullanmak istediğiniz format üzerinde kontrol sahibi olacaksınız. Sonra

Date date = new Date(); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //Or whatever format fits best your needs. 
String dateStr = sdf.format(date); 

Eğer geri bir tarihe ayrıştırabilir dize ...

Date date2 = sdf.parse(dateStr); 

ingilizce için SimpleDateFormat yerel ayarlamanız gerekir toString() biçimini kullanın ve biçimi kullanmak için var : "EEE MMM dd HH:mm:ss Z yyyy".

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", new Locale("us"));` 
+0

Mm..as dedim, toString() üzerinde hiçbir kontrolüm yok, çünkü payandalar. Neyse, EN yerel ayarını yapmak hile yapar, bu yüzden teşekkür ederim. Sadece doğru format dizesinin "EEE MMM dd HH: mm: ss zzz yyyy" olduğunu ve Ay'ı unuttuğunuzu belirtmeliyim. – prepetti

+0

Cevabın elimde olmasını sağladım. :) –

-1

"dateString" dizesini alırsınız;

SimpleDateFormat sdf = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 

Date date = sdf.parse("dateString"); 
+0

Bu işe yaramıyor ve bir istisna oluşturulmasına neden oluyor.Doğru yapıcı çağrısı: 'SimpleDateFormat sdf = new SimpleDateFormat (" EEE MMM dd HH: mm: ss Z yyyy ", yeni Locale (" us ")); – sizzle

0

İlk java Date Formats tarafından sağlanan tüm tarih biçimleri bakabilirsiniz. Ve ne istediğinizi yapmak için SimpleDateFormat sınıfını kullanabilirsiniz.

public class DateFormatTest 
    { 
     public DateFormatTest() 
     { 
     String dateString = // in "dow mon dd hh:mm:ss zzz yyyy" format 

     SimpleDateFormat dateFormat = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy"); 
     Date convertedDate = dateFormat.parse(dateString); 

     System.out.println("Converted string to date : " + convertedDate); 
     } 

     public static void main(String[] argv) 
     { 
     new DateFormatTest(); 
     } 
    } 
    }