Date ()에서 유닉스 타임 스탬프 얻기


85

값을 생성자 Date()에 넣어 유닉스 타임 스탬프를 객체 로 변환 할 수 있습니다 . 예를 들어 : 나는 그것을 .longDate()new Date(1318762128031)

그러나 그 후에 Date()객체 에서 유닉스 타임 스탬프를 어떻게 되 찾을 수 있습니까?


여전히 Date 객체의 긴 값을 얻을 수 있습니다.
켄트

@xEnOn : 긴 생성자를 사용하여 Unix 타임 스탬프를 날짜로 변환하지 않습니다. jackrabbit의 답변에 대해 언급했듯이 Unix 타임 스탬프는 밀리 초가 아닌 초 단위로 표시됩니다. 여기 : en.wikipedia.org/wiki/Unix_time 및 여기 : unixtimestamp.com/index.php Seconds. 밀리 초가 아닙니다.
TacticalCoder

답변:


93

getTime()1970 년 1 월 1 일 GMT가 생성자에 전달 된 이후의 밀리 초를 검색합니다. 그것으로부터 유닉스 시간 (동일하지만 초 단위) 을 얻는 것은 너무 어렵지 않아야 합니다.


1
감사. 작동하지 않는 정적 함수 Date.getTime (new Date ())로 잘못 기억하고 무슨 일이 벌어지고 있는지 생각했습니다.
Carven

47
@jackrabbit : 실제로 getTime () 은 Unix 타임 스탬프가 아니라 "Unix timestamp * 1000"을 반환합니다. Unix 타임 스탬프에 대한 합의 된 정의는 밀리 초가 아닌 epoch 이후의 시간을 제공한다는 것입니다. )
TacticalCoder

3
@TacticalCoder jackrabbit이 더 정확합니다. 유닉스 타임 스탬프를 밀리 초 단위로 반환합니다. 예, 유닉스 타임 스탬프는 초 단위로 동의 -하지만 당신의 대답은 (사실 될 경우 getTime() = unixTimestamp * 1000), getTime()항상 끝에서 세 개의 0을 반환하지만, 사실로 끝나는에서 무엇을 반환 할 수 있습니다 000999그것은 높은 갖고있는 수단, 밀리 초로 인한 정밀도이며 "* 1000"이 아닙니다. 의미 : 실제 unixTimestamp * 1000을 getTime()결과 와 비교하면 사례의 0.1 % 만 성공합니다.
dognose

기록을 위해 함수는 GMT-0 영역 (그리니치)의 밀리 초를 반환하므로이를 다른 영역으로 변환하는 것이 안전 할 수 있습니다.
Onat Korucu

50

를 얻으려면 timestamp에서 Date(), 당신은 분할해야합니다 getTime()의해 1000, 즉 :

Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691

또는 간단히 :

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

1
또는 더 간결하게 :new Date().getTime()
MarkHu

25
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

public class Timeconversion {
    private DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH); //Specify your locale

    public long timeConversion(String time) {
        long unixTime = 0;
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:30")); //Specify your timezone
        try {
            unixTime = dateFormat.parse(time).getTime();
            unixTime = unixTime / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return unixTime;
    }
}

6

자바 8에서는 새로운 날짜 라이브러리와 getEpochSecond메서드를 사용하여 타임 스탬프를 얻는 것이 편리합니다 (초 단위).

Instant.now().getEpochSecond();


그러나 코드에 대한 반환을 초 #를 발표 ,이 순간
밀라노 Velebit에게

맞아, @MilanVelebit. Instant대신 원하는 것으로 대체해야합니다 Instant.now(). 또는 레거시 API에서 yourDesiredJavaUtilDate.toInstant()구식을 얻은 경우 Date.
Ole VV

0

js 또는 java에서 유닉스 타임 스탬프를 얻는 가장 간단한 방법 인 js 또는 java에서 달성 하려는지 모르겠습니다 (이는 1/1/1970의 시간입니다) 다음과 같습니다.

var myDate = new Date();
console.log(+myDate); // +myDateObject give you the unix from that date

-1

SimpleDateFormat수업을 사용하십시오 . javadoc을 살펴보십시오. 포맷 스위치를 사용하는 방법을 설명합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.