我正在与api接口,他们使用.NET
所以我的所有时间戳都需要符合.NET
的日期时间格式,看起来像这样
/Date(1379142000000-0700)/
我想使用javascript
将unix次转换为此格式。我已经看到了moment.js的这个函数,但这不会返回unix / epoch格式,而且它的方向错误。
如何使用javascript将unix
时间戳转换为.net
时间格式?
使用moment.js
的解决方案很好,也可以从.net
转换为unix。
答案 0 :(得分:0)
如果你有一个日期对象,你似乎需要UTC毫秒时间值和时区偏移量,以小时和分钟为单位(hhmm)。因此假设UNIX时间值是UTC并且“.NET”时间字符串是具有偏移量的本地时间值,则:
function unixTimeToDotNetString(v) {
// Simple fn to add leading zero to single digit numbers
function z(n){return (n<10? '0' : '') + n;}
// Use UNIX UTC value to create a date object with local offset
var d = new Date(v * 1e3);
// Get the local offset (mins to add to local time to get UTC)
var offset = d.getTimezoneOffset();
// Calculate local time value by adding offset
var timeValue = +d + offset * 6e4;
// Get offset sign - reverse sense
var sign = offset < 0? '+' : '-';
// Build offset string as hhmm
offset = Math.abs(offset);
var hhmm = sign + z(offset / 60 | 0);
hhmm += z(offset % 60);
// Combine with time value
return timeValue + hhmm;
}
var unixTime = 1393552984;
console.log(unixTime + ' : ' + unixTimeToDotNetString(v)); // 1393552984 : 1393517104000+1000
两个时间值之间的差异应该等于以毫秒为单位的偏移量(在这种情况下,时区是UTC + 1000,它是36000000)。