我想得到给定日期的第二天@午夜。到目前为止我正在使用:
givenDate.Add(time.Hour * time.Duration(24))
Run Code Online (Sandbox Code Playgroud)
问题是某些时区如果我添加 24 小时,我就会在同一天停留。在法国,他们偶尔会改变工作时间。
使用以下内容添加一天是否安全?
time.Date(givenDate.Year(), givenDate.Month(), givenDate.Day()+1, 0, 0, 0, 0, loc)
Run Code Online (Sandbox Code Playgroud)
loc在给定的示例中是 time.UTC。
您提出的解决方案是“安全”且良好的:
t2 := time.Date(givenDate.Year(), givenDate.Month(), givenDate.Day()+1, 0, 0, 0, 0, loc)
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式加快速度:
y, m, d := givenDate.Date()
t2 := time.Date(y, m, d+1, 0, 0, 0, 0, loc)
Run Code Online (Sandbox Code Playgroud)
AsTime.Date()在一次调用中返回日期组件,如果您检查实现,Time.Year()和Time.Month()方法都会在幕后Time.Day()调用相同的(未导出的)方法(在您的情况下为 3 次),就像.Time.date()Time.Date()
time.Date()文件表明:
日期返回对应的时间
Run Code Online (Sandbox Code Playgroud)yyyy-mm-dd hh:mm:ss + nsec nanoseconds在给定位置当时的适当区域。
因此文档指出,位置已被考虑在内,如果您将小时、分钟、秒、纳秒传递为 0,那么在给定的 zone 中这些将是 0 。
| 归档时间: |
|
| 查看次数: |
1826 次 |
| 最近记录: |