javascript + golang处理时间问题 - Go语言中文社区

javascript + golang处理时间问题


javascript + golang处理时间问题

今天一个同事问js和golang处理时间问题上总是有误差,于是想到了去年做的一个项目中也出现了这样的问题,发个博客记录一下:

直接上代码:

javascript片段:
    var sa = $('#sa').datetimebox('getValue');
    var ea = $('#ea').datetimebox('getValue');
    //此时sa和ea输出为yyyy-MM-dd HH:mm:ss这种标准格式的字符串
    -----------------------------------------
    var sa1 = new Date(sa).toISOString();
    var ea1 = new Date(ea).toISOString();
    //此时sa1和ea1需转为ISO-8601格式: YYYY-MM-DDTHH:mm:ss.sssZ
golang片段:
    sa1 := form["sa"][0]
    ea1 := form["ea"][0]
    fmt.Println("sa1: ", sa1)
    fmt.Println("ea1: ", ea1)
    sa, _ := time.Parse(time.RFC3339Nano, sa1)
    ea, _ := time.Parse(time.RFC3339Nano, ea1)
    fmt.Println("sa: ", sa)
    fmt.Println("ea: ", ea)

经过以上处理之后就不会出现前端时间和数据库中保存的时间不一致的情况了。

浏览器控制台输出:
浏览器控制台输出

golang程序:
golang程序

golang输出:
golang输出

数据库存储:
数据库存储

*

有些浏览器可能在转iso时间的时候会出现不兼容问题,只需要在转换iso时间之前加上以下代码即可:

    if (!Date.prototype.toISOString) {
      Date.prototype.toISOString = function() {
        function pad(n) {
          return n < 10 ? '0' + n : n
        }
        return this.getUTCFullYear() + '-'
                + pad(this.getUTCMonth() + 1) + '-'
                + pad(this.getUTCDate()) + 'T'
                + pad(this.getUTCHours()) + ':'
                + pad(this.getUTCMinutes()) + ':'
                + pad(this.getUTCSeconds()) + '.'
                + pad(this.getUTCMilliseconds()) + 'Z';
      }
    }

*

希望对各位能有所帮助!

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u013701108/article/details/50673763
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-13 12:44:10
  • 阅读 ( 1099 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢