Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 共同约会_Date_Go - Fatal编程技术网

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")
      }
   }
}