コンストラクターに値を入力することで、UNIXタイムスタンプをDate()
オブジェクトに変換できます。例:私はそれをとして持つことができます。long
Date()
new Date(1318762128031)
しかしその後、どうすればDate()
オブジェクトからUNIXタイムスタンプを取り戻すことができますか?
コンストラクターに値を入力することで、UNIXタイムスタンプをDate()
オブジェクトに変換できます。例:私はそれをとして持つことができます。long
Date()
new Date(1318762128031)
しかしその後、どうすればDate()
オブジェクトからUNIXタイムスタンプを取り戻すことができますか?
回答:
getTime() = unixTimestamp * 1000
)、getTime()
常に最後に三つのゼロを返しますが、実際にはで終わるから何かを返すことができます000
する999
ことが高いを持っていることを意味します、ミリ秒による精度で、「* 1000」だけではありません。意味:実際のunixTimestamp * 1000をgetTime()
結果と比較すると、約0.1%のケースでしか成功しません。
取得するにtimestamp
からDate()
、あなたは、分割する必要がありますgetTime()
によって1000
:すなわち、
Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691
または単に:
long unixTime = System.currentTimeMillis() / 1000L;
new Date().getTime()
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;
}
}
Java 8では、新しい日付ライブラリとgetEpochSecond
メソッドを使用してタイムスタンプを取得すると便利です(秒単位)
Instant.now().getEpochSecond();
Instant
代わりに、希望するものに置き換える必要がありInstant.now()
ます。または、レガシーAPIからyourDesiredJavaUtilDate.toInstant()
昔ながらのものを入手した場合Date
。