2 回答

TA貢獻1884條經驗 獲得超4個贊
我認為下面的這種方式在閏年有一個錯誤。
t := time.Now()
buddhaTime = t.AddDate(543, 0, 0)
如果年份是閏年,比如2020,那么佛年就是2020+543,也就是2563。但是Golang時間會明白2563是在基督年,但實際上,在基督年的2563并不是閏年。因此,每個閏年的2月29日和3月1日都會發生沖突。例如,如果您嘗試轉換 29/02/2020,您將在佛教時代得到 01/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")
}
庫的更新格式會很好。

TA貢獻1802條經驗 獲得超5個贊
好吧,我非常懷疑是否存在將產生佛教時間的格式字符串,所以只需做簡單直接的事情,并在您的日期中添加 543 年......您可能應該使用常量作為beDifference.
t := time.Now()
buddhaTime = t.AddDate(543, 0, 0)
- 2 回答
- 0 關注
- 171 瀏覽
添加回答
舉報