Date 共同约会
我想复制两个字符串日期:Date 共同约会,date,go,Date,Go,我想复制两个字符串日期:“2021-05-30T15:00:00”,“2021-05-30”,当日期相同时返回true。我想忽略一个小时 "2021-05-30T15:00:00" => 2021-05-30 "2021-05-30" => 2021-05-30 2021-05-30 == 2021-05-30 // true 为了实现这一点,我做了两个函数来格式化日期timeParser表示带小时的日期简化日期用于不带小时的字符串
“2021-05-30T15:00:00”
,“2021-05-30”
,当日期相同时返回true。我想忽略一个小时
"2021-05-30T15:00:00" => 2021-05-30
"2021-05-30" => 2021-05-30
2021-05-30 == 2021-05-30 // true
为了实现这一点,我做了两个函数来格式化日期timeParser
表示带小时的日期<代码>简化日期用于不带小时的字符串日期
const dateFormat = "2006-01-02T15:04:05"
const simpleDateFormat = "2006-01-02"
const departureTime = "2021-05-30T15:00:00"
const startDate = "2021-05-30"
func timeParser(format, value string) time.Time {
parsed, err := time.Parse(format, value)
if err != nil {
fmt.Println("timeParser Error: ", err)
}
return parsed
}
func simplifyDate(value string) time.Time {
parsed, err := time.Parse(dateFormat, value)
parsed.Format(simpleDateFormat)
if err != nil {
fmt.Println("timeParser Error: ", err)
}
return parsed
}
isStartDate := simplifyDate(departureTime) == timeParser(simpleDateFormat, startDate) // return false
fmt.Println("simplifyDate(departureTime)", simplifyDate(departureTime)) //2021-05-30 15:00:00 +0000 UTC
fmt.Println("timeParser(simpleDateFormat, startDate)", timeParser(simpleDateFormat, startDate)) // 2021-05-30 00:00:00 +0000 UTC
在
timeParser
和simpledate
中,我尝试将日期格式化为DD-MM-YYYY,如simpleDateFormat=“2006-01-02”
所示。但我得到的日期末尾有小时和零,比如2021-05-30 00:00:00+0000 UTC
,2021-05-30 15:00:00+0000 UTC
。你能指出我做错了什么吗?解析日期后,你不需要格式化它们来比较它们。time.time
类型有一些方法可以在这里帮助您
试着这样做:
//time1和time2是原始时间。时间值
return(time1.Year()==time2.Year())&&(time1.YearDay()==time2.YearDay())
Year返回t发生的年份
YearDay返回t指定的一年中的某一天,对于非闰年在[1365]范围内,对于闰年在[1366]范围内
解析日期后,不需要格式化它们来进行比较。
time.time
类型有一些方法可以在这里帮助您
试着这样做:
//time1和time2是原始时间。时间值
return(time1.Year()==time2.Year())&&(time1.YearDay()==time2.YearDay())
Year返回t发生的年份
YearDay返回t指定的一年中的某一天,对于非闰年在[1365]范围内,对于闰年在[1366]范围内
在这种情况下,您似乎可以进行字符串比较:
package main
func compare(s, t string) bool {
if len(s) > 10 {
s = s[:10]
}
if len(t) > 10 {
t = t[:10]
}
return s == t
}
func main() {
for _, each := range []struct {
s, t string
res bool
} {
{"", "", true},
{"", "2021-05-30T15:00:00", false},
{"2021-05-30T15:00:00", "", false},
{"2021-05-30T15:00:00", "2021-05-30", true},
} {
if compare(each.s, each.t) == each.res {
println("pass")
} else {
println("fail")
}
}
}
在这种情况下,您似乎可以进行字符串比较:
package main
func compare(s, t string) bool {
if len(s) > 10 {
s = s[:10]
}
if len(t) > 10 {
t = t[:10]
}
return s == t
}
func main() {
for _, each := range []struct {
s, t string
res bool
} {
{"", "", true},
{"", "2021-05-30T15:00:00", false},
{"2021-05-30T15:00:00", "", false},
{"2021-05-30T15:00:00", "2021-05-30", true},
} {
if compare(each.s, each.t) == each.res {
println("pass")
} else {
println("fail")
}
}
}