Başka nedenlerden dolayı yerel saat dilimim altında çalışması gereken bir program var, ama bir yordam için GMT'de bir SimpleDateFormat kullanarak çıkış tarihleri gerekir.biçimi GMT/UTC zaman olarak
Bunu yapmanın en iyi yolu nedir?
Başka nedenlerden dolayı yerel saat dilimim altında çalışması gereken bir program var, ama bir yordam için GMT'de bir SimpleDateFormat kullanarak çıkış tarihleri gerekir.biçimi GMT/UTC zaman olarak
Bunu yapmanın en iyi yolu nedir?
kullanma standard API:
Instant now = Instant.now();
String result = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
.withZone(ZoneId.of("GMT"))
.format(now);
System.out.println(result);
yeni DateTimeFormatter örneklerini iletmenin ve statik değişkenler olarak kullanılabilir.
TimeZone gmt = TimeZone.getTimeZone("GMT");
DateFormat formatter = DateFormat.getTimeInstance(DateFormat.LONG);
formatter.setTimeZone(gmt);
System.out.println(formatter.format(new Date()));
SimpleDateFormat
'un diş güvenliğini sağlamadığı göz önüne alındığında, en ince yolun bunun yerine Joda Time kullanmak olduğunu söyleyebilirim. Sonra tek bir biçimlendirici (eğer UTC istediğinizi belirtmek için withZone(DateTimeZones.UTC)
arayarak) oluşturabilir ve dışarıda olduğunu:
private static DateTimeFormatter formatter = DateTimeFormat.forPattern(...)
.withZone(DateTimeZone.UTC);
...
String result = formatter.print(instant);
Bu, her zaman olduğunu kodunuzda, başka bir yerde Joda Zaman kullanabileceğiniz diğer yararı vardır iyi bir şey :)
teşekkürler. iyi bilgi. – pstanton
@John Skeet İplik Güvenliği bu durumda ne kadar önemlidir? Ms cinsinden vaktim var ve onu belirli bir formatta bir UTC String'e dönüştürmem gerekiyor. McDowells cevabı doğru değil mi? – AgentKnopf
@Zainodis: Her seferinde yeni bir 'DateFormat 'yaratmaktan memnunsanız iyi olur. Şahsen Joda Time yaklaşımını tercih ediyorum - heck, kısmen Joda Time sadece çok daha güzel bir API. –
hangi Yerel ayar kullanma: Eski standart API kullanarak
? – skaffman
, alakasız. – pstanton