Date()からUNIXタイムスタンプを取得する


85

コンストラクターに値を入力することで、UNIXタイムスタンプをDate()オブジェクトに変換できます。例:私はそれをとして持つことができます。longDate()new Date(1318762128031)

しかしその後、どうすればDate()オブジェクトからUNIXタイムスタンプを取り戻すことができますか?


あなたはまだあなたのDateオブジェクトの長い値を得ることができますね?
ケント

@xEnOn:longコンストラクターを使用してUnixタイムスタンプを日付に変換していません。私がjackrabbitの答えについてコメントしたように、Unixタイムスタンプは、ミリ秒ではなく秒で表されます。ここ:en.wikipedia.org/wiki/Unix_timeおよびここ:unixtimestamp.com/index.php 秒。ミリ秒ではありません。
TacticalCoder

回答:


93

getTime()1970年1月1日GMTがコンストラクターに渡されてからのミリ秒を取得します。それからUnix時間(同じですが秒単位)を取得するのはそれほど難しいことではありません。


1
ありがとう。私はそれを静的関数Date.getTime(new Date())として間違って覚えていましたが、これは機能せず、何が起こっているのかを考えました。
Carven 2011年

47
@jackrabbit:実際にはgetTime()はUnixタイムスタンプを返しませんが、「Unixタイムスタンプ* 1000」を返します。Unixタイムスタンプについて合意された定義は、エポックからの時間をミリ秒ではなく秒単位で与えるというものです。)
TacticalCoder

3
@TacticalCoder jackrabbitの方が正確です。unix-timestampをミリ秒単位で返します。はい、UNIXタイムスタンプは秒であることを合意されている-しかし、あなたの答えは本当だろうならば、( getTime() = unixTimestamp * 1000)、getTime()常に最後に三つのゼロを返しますが、実際にはで終わるから何かを返すことができます000する999ことが高いを持っていることを意味します、ミリ秒による精度で、「* 1000」だけではありません。意味:実際のunixTimestamp * 1000をgetTime()結果と比較すると、約0.1%のケースでしか成功しません。
dognose 2018年

記録として、この関数はGMT-0領域(グリニッジ標準時)でミリ秒を返すため、これを別の領域に安全に変換できます。
OnatKorucu19年

50

取得するにtimestampからDate()、あなたは、分割する必要がありますgetTime()によって1000:すなわち、

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

または単に:

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

1
またはもっと簡潔に:new Date().getTime()
MarkHu 2016

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

Java 8では、新しい日付ライブラリとgetEpochSecondメソッドを使用してタイムスタンプを取得すると便利です(秒単位)

Instant.now().getEpochSecond();


しかし、提示されたコードは、この瞬間の秒数を返します
MilanVelebit19年

確かに、@ MilanVelebit。のInstant代わりに、希望するものに置き換える必要がありInstant.now()ます。または、レガシーAPIからyourDesiredJavaUtilDate.toInstant()昔ながらのものを入手した場合Date
Ole VV

0

jsとjavaのどちらでそれを達成したいかはわかりませんが、jsではunixタイムスタンプ(これは1970年1月1日からの秒単位の時間)を取得する最も簡単な方法は次のとおりです。

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.