コンストラクターに値を入力することで、UNIXタイムスタンプをDate()オブジェクトに変換できます。例:私はそれをとして持つことができます。longDate()new Date(1318762128031)
しかしその後、どうすればDate()オブジェクトからUNIXタイムスタンプを取り戻すことができますか?
コンストラクターに値を入力することで、UNIXタイムスタンプをDate()オブジェクトに変換できます。例:私はそれをとして持つことができます。longDate()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。