覆盖日期原型方法
override Date prototype method
我在客户端中有大量日期,我想将它们以 JSON 字符串的形式发送到服务器 没有时区 ,也就是说,我只想发送 2015-04-01
(客户端本地日期)而不是 2015-03-31T16:00:00.000Z
,这是相应的 UTC 日期。在我看来,最简单的实现方式就是覆盖 .toJSON
.
我最初的想法是使用 datetime.js 例如:
function toJSON(dt) {
return datetime.strftime(dt, '%Y-%m-%d');
}
Date.prototype.toJSON = toJSON;
但是,我不知道如何引用 dt
(实例的 self)来完成。
是的,我还在想Python……
由于toJSON被指定为原型方法,this
将引用方法内部的日期所以
function toJSON() {
return datetime.strftime(this, '%Y-%m-%d');
}
Date.prototype.toJSON = toJSON;
也许你需要 datetime.js 做其他事情,但如果你只是为此使用 if,你可以考虑一个简单的函数(可能附加到 Date.prototype 或者给一个更有意义的名字):
function toJSON(d) {
// Helper for padding
function pad(n, len) {
return ('000' + n).slice(-len);
}
// If not called on a Date instance, or timevalue is NaN, return undefined
if (isNaN(d) || Object.prototype.toString.call(d) != '[object Date]') return;
// Otherwise, return an ISO format local date string
return pad(d.getFullYear(), 4) + '-' +
pad(d.getMonth() + 1, 2) + '-' +
pad(d.getDate(), 2);
}
document.write(toJSON(new Date()));
我在客户端中有大量日期,我想将它们以 JSON 字符串的形式发送到服务器 没有时区 ,也就是说,我只想发送 2015-04-01
(客户端本地日期)而不是 2015-03-31T16:00:00.000Z
,这是相应的 UTC 日期。在我看来,最简单的实现方式就是覆盖 .toJSON
.
我最初的想法是使用 datetime.js 例如:
function toJSON(dt) {
return datetime.strftime(dt, '%Y-%m-%d');
}
Date.prototype.toJSON = toJSON;
但是,我不知道如何引用 dt
(实例的 self)来完成。
是的,我还在想Python……
由于toJSON被指定为原型方法,this
将引用方法内部的日期所以
function toJSON() {
return datetime.strftime(this, '%Y-%m-%d');
}
Date.prototype.toJSON = toJSON;
也许你需要 datetime.js 做其他事情,但如果你只是为此使用 if,你可以考虑一个简单的函数(可能附加到 Date.prototype 或者给一个更有意义的名字):
function toJSON(d) {
// Helper for padding
function pad(n, len) {
return ('000' + n).slice(-len);
}
// If not called on a Date instance, or timevalue is NaN, return undefined
if (isNaN(d) || Object.prototype.toString.call(d) != '[object Date]') return;
// Otherwise, return an ISO format local date string
return pad(d.getFullYear(), 4) + '-' +
pad(d.getMonth() + 1, 2) + '-' +
pad(d.getDate(), 2);
}
document.write(toJSON(new Date()));