2016-04-01 14 views
1

Kodumda bir mantık hatası var gibi görünüyor. Şuanki zaman: 14:38, ama Kodum 18:38 diyor. Kullanabileceğim bir Takvim sınıfı olduğunu biliyorum, ancak bu kodun neden yanlış olduğunu 'a bilmek istiyorum. AşağıdaJava'da Geçerli Saat (Mantık Hatası) Saat Dilimi: ABD Doğu Saati

Kod: Eğer hesaplama gerçekleştirdiğinizde

public class welcome{ 
    public static void main(String args[]){ 
    //get total milliseconds since 1970 
    long total_millisec = System.currentTimeMillis(); 

    // compute total seconds since 1970 
    long total_sec = total_millisec/1000; 

    //compute current second 
    long current_sec = total_sec % 60; 

    //compute total minutes since epoch 
    long total_mins = total_sec/60; 

    //compute current minute 
    long current_min = total_mins % 60; 

    //compute total hours 
    long total_hours = total_mins/60; 

    //compute current hour 
    long current_hour = total_hours % 24; 

    System.out.println("Time is: "+current_hour+":"+current_min+":" 
    +current_sec); 

    } 

} 
+1

saat dilimi içinde mi? System.currentTimeMillis() '', 1.1.1970 * UTC * 'den beri milisaniye döndürür. – f1sh

+0

ABD'deyim. Doğu saati – BattleDrum

+0

Nice! Yani ET – BattleDrum

cevap

1

, System.currentTimeMillis() 1970-01-01 00:00 olan 1970 1 Ocak (geceyarısından arasındaki milisaniye cinsinden farkını döndürür ettiği tahmin) ve şimdiki zaman. Sisteminizde baz tarihini değerlendirmek ve olacak ne olduğunu görmek için deneyin:

System.out.println("" + new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm").format(new java.util.Date(0))); 

o 1969-12-31 19:00 gibi bir şey döndürebilir ve bu gece yarısı değildir.

System.currentTimeMillis() ifadesi ile aynı verir:

long currentTime = new java.util.Date().getTime() - new java.util.Date(0).getTime();