2016-05-02 11 views
12

私はタイムスタンプが入ってきています。それをPSTの1日の始まりに丸める方法があるのだろうかと思います。たとえば、ts:13058616022016-04-14, 21:10:27 -0700に対応しますが、2016-04-14 00:00:00 -0700にマップされたタイムスタンプに丸めたいとします。私は時間を読んでいます。時間の文書は、それを行う方法を見つけませんでした。ゴラン:time.Timeラウンドからデート

+1

ん[ 'Time.Truncate'](https://golang.org/pkg/time/#Time.Truncate)あなたは何をしたいですか? – JimB

+0

Truncateは別のオプションですが、時間、分、秒、およびナノ秒を表す 'Duration'を作成する必要があるため、実装するのは苦痛です。 – evanmcdonnal

+0

Time.TruncateはUTC、AFAICTが必要な場合にのみ機能します – schimmy

答えて

16

これを行う簡単な方法は、前のものを使用して年月日のみを割り当てて新しいTimeを作成することです。それはこのようになります。

rounded := time.Date(toRound.Year(), toRound.Month(), toRound.Day(), 0, 0, 0, 0, toRound.Location()) 

ここは遊びの例です。 https://play.golang.org/p/jnFuZxruKm

7

期間を短縮するには、期間24 * time.Hourをそのまま使用してください。

t := time.Date(2015, 4, 2, 0, 15, 30, 918273645, time.UTC) 
d := 24 * time.Hour 
t.Truncate(d) 

https://play.golang.org/p/BTz7wjLTWX

+13

truncateは常にUTCに対してトランケートするので、タイムゾーンがUTCでない場合、そのタイムゾーンでは00:00になりません。 – Guy