2017-11-07 11 views
1

小数部から末尾のゼロを削除しないようにするにはどうすればよいですか?私は次の単体テストが失敗する。golangでは、Time.Format()は小数部から末尾のゼロを削除します

package main 

import (
    "testing" 
    "time" 
) 

func TestTimeFormatting(t *testing.T) { 
    timestamp := time.Date(2017, 1,2, 3, 4, 5, 600000*1000, time.UTC) 
    timestamp_string := timestamp.Format("2006-01-02T15:04:05.999-07:00") 
    expected := "2017-01-02T03:04:05.600+00:00" 

    if expected != timestamp_string { 
     t.Errorf("Invalid timestamp formating, expected %v, got %v", expected, timestamp_string) 
    } 
} 

出力:

$ go test 
--- FAIL: TestTimeFormatting (0.00s) 
    main_test.go:14: Invalid timestamp formating, expected 2017-01-02T03:04:05.600+00:00, got 2017-01-02T03:04:05.6+00:00 
FAIL 
exit status 1 
FAIL _/home/sasa/Bugs/go-formatter 0.001s 

これを解決する方法任意のアイデア?

答えて

3

ああ、ドキュメントにはありましたか?ゼロを保持したい場合は、999の代わりに000を使用する必要があります。

package main 

import (
    "testing" 
    "time" 
) 

func TestTimeFormatting(t *testing.T) { 
    timestamp := time.Date(2017, 1,2, 3, 4, 5, 600000*1000, time.UTC) 
    timestamp_string := timestamp.Format("2006-01-02T15:04:05.000-07:00") 
    expected := "2017-01-02T03:04:05.600+00:00" 

    if expected != timestamp_string { 
     t.Errorf("Invalid timestamp formating, expected %v, got %v", expected, timestamp_string) 
    } 
} 
関連する問題