Date 如何将戈兰的年转换为佛教年
基本上,如果我运行这个代码,我可以得到日期Date 如何将戈兰的年转换为佛教年,date,go,formatting,Date,Go,Formatting,基本上,如果我运行这个代码,我可以得到日期 t := time.Now() fmt.Println(t.Format("02/01/2006")) 我的问题是如何以这种格式将围棋年转换为佛教年 注意将AD格式的年份转换为BE格式的公式为 B.E. = A.D. + 543 嗯,我高度怀疑是否存在一个格式字符串,它将生成佛教时间,所以只需做简单的直截了当的事情,并添加543年到您的日期。。。您可能应该为beDifference使用一个常量 t := time.Now() buddhaTime
t := time.Now()
fmt.Println(t.Format("02/01/2006"))
我的问题是如何以这种格式将围棋年转换为佛教年
注意将AD格式的年份转换为BE格式的公式为
B.E. = A.D. + 543
嗯,我高度怀疑是否存在一个格式字符串,它将生成佛教时间,所以只需做简单的直截了当的事情,并添加543年到您的日期。。。您可能应该为
beDifference
使用一个常量
t := time.Now()
buddhaTime = t.AddDate(543, 0, 0)
我认为下面这种方式在闰年有一个bug
t := time.Now()
buddhaTime = t.AddDate(543, 0, 0)
如果这一年是闰年,比如2020年,那么佛教的年份将是2020+543,也就是2563。但《戈兰时间》会明白2563年是基督年,但实际上,2563年不是闰年。因此,每个闰年的2月29日和3月1日都会发生冲突。例如,如果您尝试转换为2020年2月29日,您将得到佛教时代的1/03/2563
因此,我认为解决方案是首先检测闰年,然后处理格式
func IsLeapYear(date time.Time) bool {
endOfYear := time.Date(date.Year(), time.December, 31, 0, 0, 0, 0, time.Local)
day := endOfYear.YearDay()
return day == 366
}
库的更新格式会很好
func ConvertDateToBuddhistEra(date time.Time) string {
if IsLeapYear(date) {
y := date.Year()+543
return fmt.Sprintf("%s/%s/%d", date.Format("02"), date.Format("01"), y)
}
return date.AddDate(543, 0, 0).Format("02/01/2006")
}