javascript + golang处理时间问题

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

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中文网 QQ 交流群:729884609 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

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