您的位置:首页 > Web前端 > JavaScript

javascript + golang处理时间问题

2016-02-16 11:35 1416 查看

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输出:



数据库存储:



*

有些浏览器可能在转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';
}
}


*

希望对各位能有所帮助!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript golang