2017-12-26 10 views
-1

以下のコードがあります。リクエストからの文字列型として日付の値を持ち、時刻型に変換しようとしています。しかし、私はフォーマットに関するいくつかの問題があります。Goの日付換算

type LeanData struct { 
    Start_Date time.Time 
} 
const dateLayout = "01-02-2006" 

startdate := request.FormValue("startdate") 
if len(strings.TrimSpace(startdate)) > 0 { 
    sdate, err := time.Parse(dateLayout, startdate) 
} 
fmt.Println("startdate", startdate) 
fmt.Println("sdate", sdate) 

以下の出力があります。

startdate 02-03-2016 
sdate 2016-02-03 00:00:00 +0000 UTC 

ここでは、開始日がtime型のため変換を行っています。 2016-02-03として変換したいが、2016-02-03 00:00:00 +0000 UTCでは変換しない。 また、リクエストからの値がnil/emptyの場合、空の値を開始日に割り当てる方法。

誰かが私にこれを達成する方法を教えてもらえますか?

+0

変換が正常であるようです。時間のない日付部分だけが必要な場合は、['Time.Format()'](https://golang.org/pkg/time/#Time.Format)または['Time.Date()']( https://golang.org/pkg/time/#Time.Date)。 – Adrian

答えて

3

time.Parseは、日付と時刻の情報を含むタイプtime.Timeのオブジェクトを返します。 Goには日付情報のみを含むタイプはありません。それをフォーマットするときは、しかし例えば、日付の時間部分を無視することができます。

印刷します
fmt.Println("sdate", sdate.Format("2006-01-02")) 

sdate 2016-02-03 

をちょうどとしてそれを宣言し、空の時間を初期化するには:

var sdate time.Time