2016-05-31 7 views
0

私はJavaの月の最初の日にUNIX時間を回そうとしていますが、成功しません。例:Java:丸められたunix時間(長い)月の最初の日へ

1314057600(火、2011年8月23日00:00:00 GMT)

1312156800(月、2011年8月1日00:00:00 GMT)

私はファイルから読み込み、変数(変数 "valor"という名前)の中にLongとして保存しています。私は、この新しいタイムスタンプを取得するにはどうすればよい

LocalDate key = LocalDate.of(timestamp.getYear(), timestamp.getMonthValue(), 1); 

: は、これまでのところ私は月のbegginingのための新しいタイムスタンプをそれ

LocalDateTime timestamp = LocalDateTime.ofInstant(Instant.ofEpochSecond(valor), ZoneId.systemDefault()); 

でのJavaのタイムスタンプを作成し、作成することができました長いです?このような

+0

最初に考えてみましょう:どのタイムゾーンに興味がありますか?常にUTCですか?そして私はグレゴリオ暦を前提としていますか? –

+1

これより前の投稿(http://stackoverflow.com/a/21247526/442256)から試してください – sfk

+0

この場合、タイムゾーンは重要ではなく、グレゴリオ暦です。 –

答えて

2

何かが、それがうまくいくように聞こえる:

key.atStartOfDay().atZone(ZoneId.systemDefault()).toEpochSecond() 

(あなたは、システムのデフォルトのタイムゾーンでそれをしたいと仮定します)。

+0

パーフェクト!私の間違いは、LocalDateTimeの代わりにLocalDateを使用したことです。 LocalDateには 'toEpochSecond'はなく、' toEpochDay'だけがあります。これは同じではありません。 –

関連する問題