2014-09-29 20 views
8

Başka bir sistemden bir dize tarihi alıyorum ve o tarihin yerel ayarını biliyorum (diğer sistemden de edinilebilir). Bu dizeyi, hedef kalıbı açıkça belirtmeden Joda-TimeDateTime nesnesine dönüştürmek istiyorum.Joda-Time DateTime biçimlendirmesi yerel ayarlara göre

Örneğin, bu dizgeyi "09/29/2014" tarih dilini, yalnızca "mm/gg/yyyy" biçiminde tarih biçimini kodlayarak değil, yalnızca yerel ayarı kullanarak dönüştürmek istiyorum. Sabit kod formatı bulamıyorum, aldığım tarihin yereline göre değişecektir. Gördüğünüz gibi

cevap

9
String localizedCalendarDate = DateTimeFormat.shortDate().print(new LocalDate(2014, 9, 29)); 
// uses in Germany: dd.MM.yyyy 
// but uses in US: MM/dd/yyyy 

LocalDate date = 
    DateTimeFormat.mediumDate().withLocale(Locale.US).parseLocalDate("09/29/2014"); 
DateTime dt = date.toDateTimeAtStartOfDay(DateTimeZone.forID("America/Los_Angeles")); 

, ayrıca global zaman damgasına bir çözümlenen tarih dönüştürmek için (örneğin ABD-California) saatini bilmek ve zaman dilimine (= örnekte günün başlangıcını) gerekecektir DateTime gibi.

+1

Bilginize, alternatif bir söz dizimi [ 'DateTimeFormat.forStyle() '] (http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html#forStyle (aradığını java.lang.String)) ve bir çift karakter geçirerek. Tarih bölümü için bir karakter ve zaman kısmı için bir tane daha geçirin. Kısa stil için 'S', orta için 'M', uzun süre 'L' ve tam olarak 'F' karakterlerini belirtin. Bir stil karakterini belirterek bir tarih veya saat ihmal edilebilir '-'. –

+0

@BasilBourque Güzel yorumunuz için teşekkür ederiz. –

İlgili konular