2015-10-02 28 views
8

現地時間がUTCタイムゾーンであるとすれば、org.joda.time.LocalDateTimeをUnixタイムスタンプに変換するにはどうすればよいですか?Joda LocalDateTimeをUnixタイムスタンプに変換する

例:>1443785500

new LocalDateTime(2015, 10, 02, 11, 31, 40)。最も簡単な方法は、ちょうどUTCためDateTimeZoneを指定することで、DateTimeに変換し、それを変換することです「UTCに、与えられたLocalDateTime」あなたがUnixタイムスタンプを望むことを考えると

+0

私が思い出したように、Unixタイムスタンプは、Unixエポックからの秒数です。[this](http://stackoverflow.com/questions/22990067/how-to-extract-epoch-from-localdate- and-localdatetime) – MadProgrammer

+1

'LocalDateTime'はタイムゾーンを持たないため、時間内に1つのポニットを表しません。あなたはそれが意味をなさせるためにタイムゾーンを指定する必要があります。 –

+0

@JonSkeetそれはUTCです! –

答えて

18

LocalDateTime local = new LocalDateTime(2015, 10, 02, 11, 31, 40); 
DateTime utc = local.toDateTime(DateTimeZone.UTC); 
long secondsSinceEpoch = utc.getMillis()/1000; 

注意Unixのタイムスタンプとしてここで秒を使用する - 他のAPI(例:java.util.Date)は、Unixエポックから数ミリ秒を要します。

+0

また、 '1000'の代わりに' DateTimeConstants.MILLIS_PER_SECOND'を使うか、 'Duration.millis(local.toDateTime(DateTimeZone.UTC).getMillis).getStandardSeconds'を使うことができます。 – mixel

+0

シンプルできちんとした、Jodaの開発者がgetLocalMillis()を公開する理由を作り出しているとき。リンク:https://github.com/JodaOrg/joda-time/issues/87 – vijay

関連する問題