2012-09-26 2 views
0

Я хочу получить текущую DateTime в зоне моего выбора и в определенном формате (например, HH-MM-SS, MM-DD-YY, MoMo-DD-YY-HH-MM-SS и т. Д.). Как это сделать, используя JodaTime?Как получить текущее время в определенном формате для определенной зоны?

+1

Что вы пробовали? Вы можете легко получить текущее время в определенной зоне с помощью конструктора 'DateTime', и вы можете отформатировать его в определенном формате с помощью' DateTimeFormat'. Где вы застряли? –

+0

@JonSkeet - я могу сделать DateTime (DT) с зоной. Не уверен, что лучше - DateTimeZone.forID (XXXX) или DateTime (TheZone). После этого шага, как преобразовать DT i в определенный формат? –

ответ

3

Учитывая, что вы уже видели инструкцию (которая включает в себя разделы, посвященные time zones и formatting), это не совсем понятно, где ваша путаница. Некоторые примеры кода, чтобы вы собираетесь:

DateTimeZone zone = DateTimeZone.forID("Europe/London"); 
DateTime currentTimeInLondon = new DateTime(zone); 
DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm:ss, MM-dd-yyyy"); 
String text = formatter.print(currentTimeInLondon); // e.g. 08:24:54, 09-26-2012 

Это будет стоить вам принимать некоторое время, чтобы проанализировать, почему вы не могли попасть в этот код самостоятельно, учитывая информацию в руководстве пользователя. Способность разрабатывать способы использования API-интерфейсов - очень важный навык в качестве инженера-программиста - вы не должны долгое время находиться в режиме ложки.

+0

Да, я это видел. Он также работает с YourDateTime.toString («PutALegalFormatHere»); –

+0

@ davidblaine: Да, но это обычно не так чисто - в частности, вы обычно можете создать «DateTimeFormat' * один раз» и повторно использовать его на протяжении всего срока службы приложения. –

1

Используйте следующий код, чтобы получить время в соответствии с конкретной зоной с форматом.

Locale locale = Locale.FRENCH; 

    // Format with a custom format 
    DateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy", locale); 
    String s = formatter.format(new Date()); 
    // mar., 29 sept. 2012 

    // Format with a default format 
    s = DateFormat.getDateInstance(DateFormat.MEDIUM, locale).format(new Date()); 
    // 29 sept. 2012 
+0

joda время пожалуйста. –

+0

Отправка ссылки на время для джедай. http://stackoverflow.com/questions/10106143/work-around-for-a-joda-time-bug-in-periodformat –

Смежные вопросы