当前位置: 首页 > 面试题库 >

如何构造time.Time与时区偏移

羊新翰
2023-03-14
问题内容

这是来自Apache日志的示例日期:

[07/Mar/2004:16:47:46 -0800]

我已经成功地将其解析为year(int),month(time.Month),day(int),hour(int),minute(int),second(int)和timezone(string)。

如何构造time.Time,使其包含-0800时区偏移量?

这是我到目前为止的内容:

var nativeDate time.Time
nativeDate = time.Date(year, time.Month(month), day, hour, minute, second, 0, ????)

我应该用什么代替????time.Localtime.UTC在这里不合适。


问题答案:

您可以使用time.FixedZone()构造time.Location具有固定偏移量的。

例:

loc := time.FixedZone("myzone", -8*3600)
nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, loc)
fmt.Println(nativeDate)

输出(在Go Playground上尝试):

2019-02-06 00:00:00 -0800 myzone

如果区域偏移量为字符串,则可以使用time.Parse()它来解析。使用仅包含参考区域偏移量的布局字符串:

t, err := time.Parse("-0700", "-0800")
fmt.Println(t, err)

输出(在Go Playground上尝试):

0000-01-01 00:00:00 -0800 -0800 <nil>

如您所见,结果time.Time的区域偏移为-0800小时。

因此我们的原始示例也可以写成:

t, err := time.Parse("-0700", "-0800")
if err != nil {
    panic(err)
}

nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, t.Location())
fmt.Println(nativeDate)

输出(在Go Playground上尝试):

2019-02-06 00:00:00 -0800 -0800


 类似资料:
  • 在我的网站中,用户A创建了一个从上午9:00开始的事件。我将该时间转换为GMT,这样,如果用户B在两小时前的不同时区看到该事件,它可以转换为用户B的时区,并显示该事件在11:00AM开始。 我唯一的想法是,当我得到如下所示的时区偏移量时,我是否应该总是将日期设置为一月,以便无论实际月份如何,我总是得到相同的时区偏移量?或者有没有更好的方法来处理这件事?

  • 问题内容: 有时候,我想花点时间运行我的代码的一部分。我已经检查了许多在线站点,并大致看到了两种主要方法。一个正在使用,另一个正在使用。 因此,我编写了一个非常简单的脚本来比较两者: 基本上,它乘以在for循环中打印“ ABC” 100次所需的时间。左边的数字是的结果,右边的数字是: 如您所见,有时time.time更快,有时更慢。哪种方法更好(更准确)? 问题答案: 更准确,原因有以下三个: 它

  • 问题内容: 我知道相反。给定一个时区,我可以通过以下代码片段获取时区偏移量: 我想知道如何从时区偏移量获取时区名称。 鉴于 (以毫秒为单位; +6.00偏移) 我想得到以下任何可能的时区名称的结果: 问题答案: 用

  • 问题内容: 我需要下一个流程: nodejs utils api中有这种可能性吗? 问题答案: 您可以使用node-time,如下所示:

  • 默认情况下,Angular提供生命周期钩子。 如果我们已经有,为什么要使用?

  • 本文向大家介绍Java构造器(构造方法)与方法区别说明,包括了Java构造器(构造方法)与方法区别说明的使用技巧和注意事项,需要的朋友参考一下 构造器,又称为构造方法。构造器用于构造该类的实例,也就是对象。 格式如下:[修饰符] 类名 (形参列表){//n条语句} 构造方法是一种特殊的方法,与一般的方法区别:    1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。