时间处理
时间处理常用方法有:
- 获取当前时间:
time.Now()函数获取当前本地时间。是最常用来获取时间的函数。
currentTime := time.Now()// 当前的本地时间
- 构造时间:用
time.Date()函数构造时间,其参数为年、月、日、时、分、秒、纳秒和时区信息。如果不指定时区,则默认为 UTC 时区。
t := time.Date(2022, time.January, 1, 12, 0, 0, 0, time.UTC)
fmt.Println(t) // 2022-01-01 12:00:00 +0000 UTC
- 获取时间的细节:获取
time结构体的年、月、日、时、分、秒等信息。 如:
t := time.Now()
year := t.Year()
month := t.Month()
- 计算时间差:用
Sub()方法计算两个时间点之间的时间差,得到一个时间段(time.Duration类型)。时间段可以通过Hours()、Minutes()、Seconds()方法获取小时、分钟、秒等单位的数值。
t1 := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC)
t2 := time.Now()
duration := t2.Sub(t1)
fmt.Println(duration.Hours()) // 时间差的小时数
- 获取时间戳:用
Unix()方法获取一个时间点的时间戳,大小为从 1970-01-01 00:00:00 UTC 到该时间点的秒数。
t := time.Now()
timestamp := t.Unix()
fmt.Println(timestamp) // 当前时间戳
- 时间格式化和解析:
Format()方法将时间按照指定格式转为字符串格式,Parse()函数将字符串解析为时间。
t := time.Now()
fmt.Println(t.Format("2006-01-02 15:04:05")) // 输出: 当前时间的格式化字符串
t, _ = time.Parse("2006-01-02 15:04:05", "2022-01-01 12:00:00")
fmt.Println(t) // 输出: 解析后的时间
进程管理
- 在 Go 语言中,可以使用
os.Args来获取程序执行时指定的命令行参数,类似于 C 语言中的argv。os.Args是一个字符串切片,其中第一个元素是执行的二进制文件的名称路径,后续元素是传递给程序的命令行参数。
- 使用
os.Args获取的命令行参数有:
args := os.Args
// 输出所有命令行参数
for _, arg := range args {
fmt.Println(arg)
}
- 若将上面的代码编译为二进制文件
test,然后执行以下命令:
./test abcd
- 输出将会是,二进制文件路径 和 执行时传入的参数:
./test
abcd
2. 使用 os.Getenv 来读取环境变量。
os.Getenv 函数是用来获取指定环境变量的值,类似于js中的 process.env。
- 我们可以先使用
os.Setenv函数来设置环境变量的值。
// 设置名为 "PATH" 的环境变量的值
os.Setenv("PATH", "/usr/local/bin")
- 然后使用
os.Getenv函数来获取环境变量的值。
// 获取名为 "PATH" 的环境变量的值
path := os.Getenv("PATH")
fmt.Println(path)// 输出: /usr/local/bin
- 在 Go 语言中,
exec包提供了执行外部命令的功能, 可以在 Go 语言中调用其他程序或脚本。
exec.Command函数用于创建一个执行命令的对象。第一个参数是要执行的命令,后续参数是命令的参数。- 注意
exec.Command并没有真正执行命令,需要调用命令对象的方法如Run()、Output()、Start()等,才能执行命令。 - 例如,调用
Output()会等待命令执行完成,并返回命令的标准输出作为字节切片。若命令执行失败,则会返回错误信息。
cmd := exec.Command("ls", "-l")//ls -l
output, err := cmd.Output()
if err != nil {
fmt.Println("命令执行失败:", err)
return
}
fmt.Println(string(output))