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


GO Parse用法及代码示例


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

用法:

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

Parse 解析格式化的字符串并返回它所代表的时间值。请参阅名为 Layout 的常量的文档以了解如何表示格式。第二个参数必须可以使用作为第一个参数提供的格式字符串(布局)进行解析。

Time.Format 的示例详细演示了布局字符串的工作原理,是一个很好的参考。

解析时(仅),输入可能在秒字段之后立即包含小数秒字段,即使布局不表示其存在。在这种情况下,逗号或小数点后跟最大数字系列将被解析为小数秒。小数秒被截断为纳秒精度。

布局中省略的元素假定为零,如果不可能为零,则为一,因此解析 "3:04pm" 返回对应于 UTC 0 年 1 月 1 日 15:04:00 的时间(注意,由于年份为 0,这个时间是在零时间之前)。年份必须在 0000..9999 范围内。检查星期几的语法,否则将被忽略。

对于指定两位数年份 06 的布局,值 NN >= 69 将被视为 19NN,值 NN < 69 将被视为 20NN。

本评论的其余部分说明了时区的处理。

在没有时区指示符的情况下,Parse 返回 UTC 时间。

在解析具有 -0700 之类的区域偏移量的时间时,如果偏移量对应于当前位置 (Local) 使用的时区,则 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

}

输出:

2013-02-03 19:54:00 -0800 PST
2013-02-03 00:00:00 +0000 UTC
2006-01-02 15:04:05 +0000 UTC
2006-01-02 15:04:05 +0700 +0700
error parsing time "2006-01-02T15:04:05Z07:00": extra text: "07:00"

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Parse。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。