当前位置: 首页>>代码示例>>用法及示例精选>>正文


golang time.Parse用法及代码示例

GO语言time包Parse函数的用法及代码示例。

用法:

func Parse(layout, value string) (Time, error)

解析解析一个格式化的字符串,并返回它表示的时间值。该布局通过显示参考时间(定义为

Mon Jan 2 15:04:05 -0700 MST 2006

如果它是值,将被解释;它用作输入格式的示例。然后将对输入字符串进行相同的解释。

预定义的布局ANSIC,UnixDate,RFC3339和其他布局描述了参考时间的标准和便捷表示形式。有关格式和参考时间的定义的更多信息,请参见ANSIC文档以及此包定义的其他常量。另外,Time.Format的可执行示例详细说明了布局字符串的工作原理,是一个很好的参考。

从值中省略的元素假定为零,或者当不可能为零时为1,因此解析"3:04pm"会返回与UTC年1月1日,0、15:04:00对应的时间(请注意,由于年份为0,所以这次早于零时间)。年份必须在0000..9999的范围内。将检查星期几的语法,否则将忽略该语法。

对于指定two-digit为06年的布局,将值NN> = 69视为19NN,将值NN <69视为20NN。

在没有时区指示符的情况下,解析将以UTC返回时间。

解析时间偏移为-0700的时间时,如果偏移量对应于当前位置(本地)使用的时区,则Parse在返回的时间中使用该位置和时区。否则,它将时间记录为处于伪造位置,时间固定在给定的区域偏移处。

解析具有MST等区域缩写的时间时,如果区域缩写在当前位置具有已定义的偏移量,则使用该偏移量。区域缩写"UTC"被识别为UTC,与位置无关。如果区域缩写未知,则Parse将时间记录在具有给定区域缩写和零偏移的虚构位置中。此选择意味着可以使用相同的布局无损地解析和重新格式化这样的时间,但是表示中使用的确切瞬间将因实际区域偏移而有所不同。为避免此类问题,请首选使用数字区域偏移量的时间布局或使用ParseInLocation。

示例

package main

import (
	"fmt"
	"time"
)

func main() {
	// See the example for Time.Format for a thorough description of how
	// to define the layout string to parse a time.Time value; Parse and
	// Format use the same model to describe their input and output.

	// longForm shows by example how the reference time would be represented in
	// the desired layout.
	const longForm = "Jan 2, 2006 at 3:04pm (MST)"
	t, _ := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")
	fmt.Println(t)

	// shortForm is another way the reference time would be represented
	// in the desired layout; it has no time zone present.
	// Note: without explicit zone, returns time in UTC.
	const shortForm = "2006-Jan-02"
	t, _ = time.Parse(shortForm, "2013-Feb-03")
	fmt.Println(t)

	// Some valid layouts are invalid time values, due to format specifiers
	// such as _ for space padding and Z for zone information.
	// For example the RFC3339 layout 2006-01-02T15:04:05Z07:00
	// contains both Z and a time zone offset in order to handle both valid options:
	// 2006-01-02T15:04:05Z
	// 2006-01-02T15:04:05+07:00
	t, _ = time.Parse(time.RFC3339, "2006-01-02T15:04:05Z")
	fmt.Println(t)
	t, _ = time.Parse(time.RFC3339, "2006-01-02T15:04:05+07:00")
	fmt.Println(t)
	_, err := time.Parse(time.RFC3339, time.RFC3339)
	fmt.Println("error", err) // Returns an error as the layout is not a valid time value

}

相关用法

注:本文由纯净天空筛选整理自golang.org大神的英文原创作品 golang time.Parse。非经特殊声明,原始代码版权归原作者所有,本译文的传播和使用请遵循“署名-相同方式共享 4.0 国际 (CC BY-SA 4.0)”协议。