2009-04-08 6 views
205

Date.getTime(), 1 Oca 1970'ten beri milisaniye döndürür. Unixtime, 1 Ocak 1970'ten beri saniye sürüyor. Genellikle java kodlamıyorum, ancak bazı hata düzeltmelerinde çalışıyorum. Ben var:Java'da "unixtime" alma

Date now = new Date();  
Long longTime = new Long(now.getTime()/1000); 
return longTime.intValue(); 

Java'da unixtime almanın daha iyi bir yolu var mı?

return (int) (System.currentTimeMillis()/1000L); 
+22

Bir tanıtımı yaptığınız için, 2038 yılını (Unix için Y2K eşdeğeri) tanıttınız. Unix epoch'un 2 milyara ulaştığı ve negatife döndüğü zamandır. Düzeltme 64-bit Unix'e geçmek. Java eşdeğeri onu uzun süre bırakmaktır. –

+1

Evet, bunun farkındayım. Bu arabirim ile kod, unixtime için 32bit int bekliyor. –

+123

2038 yakında. – Pacerier

cevap

385

System.currentTimeMillis() w/Tarih nesne oluşturma kaçının: John M önerisine dayanarak

GÜNCELLEME, ben ile sona erdi. 1000 ile bir bölme sizi Unix dönemine götürür.

Bir yorumda belirtildiği gibi, tipik olarak, unixTime değişkeninin türü için uzun bir kutulu nesne (büyük-Uzun Uzun) olmayan bir ilkel uzun (küçük harf-uzun) olmasını istersiniz.

long unixTime = System.currentTimeMillis()/1000L; 
+3

Ayrıca, bir nesne (bir Koleksiyon içine koymak gibi) bir nesne olarak işlemek için sürece, uzun bir süre için otomatik kutulama yerine Long'a kullanmayı düşünün, gereksiz nesne oluşturulmasını önler – Brabster

+0

Tarih'i tamamen kullanmaktan kaçınmanız durumunda, daha iyi durumda olacaksınız neyse ... – Varkhan

+0

Gerçek UNIX zaman damgası int, doğru kullanılarak belirtilmelidir? – Zorayr

166

Java 8, tarihler ve saatler ile çalışmak için yeni bir API ekledi. Java 8 ile

long unixTimestamp = Instant.now().getEpochSecond(); 

Instant.now() anki sistem saatini temsil eden bir Instant döndürür kullanabilirsiniz. getEpochSecond() ile, Instant'dan epoch saniye (unix zamanı) alırsınız.

+17

Bu yeni kabul edilen cevap olmalı. –

+1

Instant.now(). GetEpochSecond() ',' new Date(). GetTime() 've' System.currentTimeMillis() ' – SohamC

+1

arasındaki fark nedir? Bir fark, ikincinin ikinci saniyedir. milisaniye cinsindendir. Başkaları olabilir ya da olmayabilir. –

İlgili konular