javascript + golang处理时间问题

u013701108 · · 3767 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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博客

感谢作者:u013701108

查看原文:javascript + golang处理时间问题

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3767 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传