2016-04-12 17 views
0

Java 8 kullanıyorum ve zaman damgasını bir zaman dilimi ile bir saat diliminden diğerine dönüştürmeyi deniyorum. Zaman damgası kullanıcının saat diliminde, örn. Joda zaman veya Java 8 kullanırken damgası geçmesi AncakBir zaman dilimi ile yerel saat dilimine dönüştürme tarihi

// 2016-04-11T12:00:00Z 
long sourceTime = 1460372400000L; 
timezoneConverter(sourceTime, "America/New_York"); 

, LocalDateTime/Anında, kullanıcının zaman dilimine göre ayarlanır - bu zaten olduğu gibi, bu durum gerek yok Kullanıcının saat dilimi (tüm zaman damgaları kullanıcının yerel saatinde gönderilir).

2016-04-11T07:00-04:00[America/New_York] 

yerine

2016-04-11T12:00-04:00[America/New_York] 

yılında

ZonedDateTime zdt = 
    ZonedDateTime.ofInstant(Instant.ofEpochMilli(1460372400000L), 
          ZoneId.of("America/New_York")) 

sonuçları bu çevrede herhangi bir yolu var mı?

Teşekkürler!

+0

korkarım alın açıklamanız "kullanıcının t zaman damgasıdır ime bölgesi. " '1460372400000L' gibi zaman damgalarının anlamlarının yanlış anlaşıldığını gösterir. Bu tür küresel zaman damgaları, herhangi bir zaman dilimi ile ilgili değildir, ancak yalnızca UTC + 00: 00'a sabitlenmiştir. –

cevap

1

1460372400000L

2016-04-11T11:00:00Z böylece başka bir zaman diliminde dönüştürme edilir 2016-04-11T07:00-04:00[America/New_York] olan Mon, 11 Apr 2016 11:00:00 GMT veya Mon, 11 Apr 2016 12:00:00 BST olup. Sadece yerel saat dilimini istiyorsanız

, sana LocalDateTime

LocalDateTime dt = LocalDateTime.ofEpochSecond(1460376000L, 0 , ZoneOffset.ofHours(0)); 
System.out.println(dt); 

baskılar

2016-04-11T12:00 
+0

Zaman damgası benim durumumda ayarlanmamalıdır - kullanıcının saat diliminden bir zaman damgasıdır. – KingTravisG

+0

@ StephenWithAPh1986 bu, LocalDateTime'ın ne için olduğunu. Saat dilimi olmayan bir DateTime. –

0
long sourceTime = 1460372400000L; 
//Select your timezone 
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC"); 
Calendar calendar = new GregorianCalendar(utcTimeZone); 
calendar.setTimeInMillis(sourceTime); 

kullanmanızı öneririz // Geçerli Zaman Dilimi

LocalTime time = LocalTime.now(); 
System.out.println("Local Time Zone: "+ZoneId.systemDefault().toString()); 
System.out.println("Current local time : " + time); 
İlgili konular