日期转换.Net JSON到ISO [英] Date conversion .Net JSON to ISO
问题描述
如何将JSON.Net中的日期时间格式转换为:
How can I convert a date time format from JSON.Net such as:
/ Date(1154970000000 + 0700)/
/Date(1154970000000+0700)/
到ISO- ??格式
2011-12-18T23:34:59Z
To ISO-?? format 2011-12-18T23:34:59Z
最好在Python或Javascript中。
Preferably in either Python or Javascript.
Ive决定后者在JS世界中似乎是最广泛使用的,人性可读的,自然可排序的。我将在每个用户的基础上存储偏移量。
Ive decided on the latter as its seems in the JS world the most widely used, humanly readable and naturally sortable. I'll store offsets on a per user basis.
如果一个实现再一个问题,如果有人可以告诉我两种格式的正确名称,我可能会更多的运气了解如何转换。
If an implementation is again a bit much too ask, if someone can tell me the correct name for both formats I might have more luck in understanding how to convert.
推荐答案
jsonDate = "/Date(1154970000000+0700)/";
var strDate = parseInt(jsonDate.replace(/\/Date\(([-\d]+).*$/, "$1"));
var strHour = parseInt(jsonDate.replace(/.*\d([+-]\d\d).*$/, "$1"), 10);
var strMin = parseInt(jsonDate.replace(/.*\d([+-])\d\d(\d\d).*$/, "$1$2"), 10);
var date = new Date(strDate);
if (!isNaN(strHour)) date.setHours(date.getHours() + strHour);
if (!isNaN(strMin)) date.setMinutes(date.getMinutes() + strMin);
var out = date.toISOString();
转换为ISO的功能:
var toISOString = Date.prototype.toISOString ?
function(d){return d}:
(function(){
function t(i){return i<10?"0"+i:i};
function h(i){return i.length<2?"00"+i:i.length<3?"0"+i:3<i.length?Math.round(i/Math.pow(10,i.length-3)):i};
function toISOString(){
return "".concat(
this.getUTCFullYear(), "-",
t(this.getUTCMonth() + 1), "-",
t(this.getUTCDate()), "T",
t(this.getUTCHours()), ":",
t(this.getUTCMinutes()), ":",
t(this.getUTCSeconds()), ".",
h("" + this.getUTCMilliseconds()), "Z"
);
};
return function(d){
d.toISOString = toISOString;
return d;
}
})();
这篇关于日期转换.Net JSON到ISO的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!