经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
时间戳转换小工具
来源:cnblogs  作者:janbar  时间:2021/4/19 8:58:52  对本文有异议

有时候需要时间和时间戳之间进行转换,以及获取当前时间和时间戳。
虽然功能很小,但是也不想每次去网页上搜一搜这么麻烦,因此写了一个小工具。

源码鉴赏:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "strconv"
  6. "strings"
  7. "time"
  8. )
  9. func main() {
  10. const timeLayout = "\"2006-01-02 15:04:05\" \"20060102150405\""
  11. var sData []string
  12. switch len(os.Args) {
  13. case 1:
  14. t := time.Now()
  15. fmt.Println(t.Unix(), t.Format(timeLayout))
  16. return
  17. case 2:
  18. data := strings.TrimSpace(os.Args[1])
  19. unix, err := strconv.ParseInt(data, 10, 64)
  20. if err == nil {
  21. // 转换这种: stamp 1618624877
  22. fmt.Println(time.Unix(unix, 0).Format(timeLayout))
  23. return
  24. }
  25. // 转换这种: stamp "2006-01-02 15:04:05"
  26. sData = strings.Fields(data)
  27. case 3:
  28. // 转换这种: stamp 2006-01-02 15:04:05
  29. sData = []string{os.Args[1], os.Args[2]}
  30. default:
  31. fmt.Printf("usage:%s or %s [2006-01-02 15:04:05|1136185445]\n", os.Args[0], os.Args[0])
  32. return
  33. }
  34. var ymd, hms [3]int // 计算年月日
  35. for i, v := range strings.Split(strings.TrimSpace(sData[0]), "-") {
  36. n, err := strconv.Atoi(v)
  37. if err != nil {
  38. panic(err)
  39. }
  40. ymd[i] = n
  41. }
  42. if len(sData) == 2 { // 计算时分秒
  43. for i, v := range strings.Split(strings.TrimSpace(sData[1]), ":") {
  44. n, err := strconv.Atoi(v)
  45. if err != nil {
  46. panic(err)
  47. }
  48. hms[i] = n
  49. }
  50. }
  51. t := time.Date(ymd[0], time.Month(ymd[1]), ymd[2], hms[0], hms[1], hms[2], 0, time.Local)
  52. fmt.Println(t.Unix())
  53. }

使用方法:

  1. 不带参数,获取当前时间戳和时间
  2. c:\>stamp
  3. 1618626612 "2021-04-17 10:30:12" "20210417103012"
  4. 带一个参数,包含完整年月日,时分秒,返回时间戳
  5. c:\>stamp "2021-04-17 11:22:41"
  6. 1618629761
  7. 带两个参数,第一个为年月日,第二个为时分秒
  8. c:\>stamp 2021-04-17 12:22:41
  9. 1618633361
  10. 只传一串数字会被当做时间戳,返回对应时间
  11. c:\>stamp 1618693361
  12. "2021-04-18 05:02:41" "20210418050241"
  13. 直传年月,注意直数字会被当做时间戳转换
  14. c:\>stamp 2021-4
  15. 1617120000
  16. 只传年月日
  17. c:\>stamp 2021-4-18
  18. 1618675200
  19. 直传年月日,时
  20. c:\>stamp 2021-4-18 14
  21. 1618725600
  22. 直传年月日,时分
  23. c:\>stamp 2021-4-18 14:45
  24. 1618728300
  25. 直传年月日,时分秒
  26. c:\>stamp 2021-4-18 14:45:32
  27. 1618728332

把这个小工具记录一下,后面需要用的时候可以方便点,提高效率。

原文链接:http://www.cnblogs.com/janbar/p/14669685.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号