Я хотел бы переименовать некоторые файлы на основе даты модификации.Go time.Format wrong month
Когда я использую метод time.Format, чтобы получить нужную строку, в основном в этом формате YYYY-MM-DD_HH-MM-SS
, день имеет трейлинг 0.
Есть ли что-нибудь, что я делаю неправильно здесь?
package main import ( "time" "fmt" ) func main() { loc, _ := time.LoadLocation("Europe/Berlin") const layout = "2006-01-20_15-04-05" t := time.Date(2013, 07, 23, 21, 32, 39, 0, loc) fmt.Println(t) fmt.Println(t.Format(layout)) }
Выход:
2013-07-23 21:32:39 +0200 CEST 2013-07-230_21-32-39
Месяц или день? Я вижу конечный «0» в день. Или вы хотите, чтобы ваш месяц был '7', а не' 07'? –
Кстати, будьте осторожны с использованием ведущих нулей в качестве части ваших числовых литералов в ваших программах Go. Я увидел буквальную '07' в вашей программе и инстинктивно вздрогнул. Если вы не будете осторожны, вы можете случайно использовать ** восьмеричную **. https://golang.org/ref/spec#Integer_literals. В приведенном выше случае это не технически проблема, но в целом, используйте восьмеричные целочисленные литералы только тогда, когда вы действительно имеете в виду восьмеричные. – dyoo
@ Ainar-G Извините, конечно, я имею в виду трейлинг 0 в день. – fortrieb