यहाँ कुछ सच में स्वच्छ और सरल (कम से कम मैं तो मानना है :)) और क्लोन या toJSON की तरह ब्राउज़र की मूल कार्यों के किसी भी अधिक भार होने के लिए तारीख का कोई जोड़-तोड़ की आवश्यकता है (संदर्भ: JSON करने के लिए एक जावास्क्रिप्ट दिनांक stringify और समय क्षेत्र की रक्षा कैसे , Shawson courtsy)
JSON.string को अपने दिल की सामग्री के लिए सामान प्रदान करता है कि एक प्रतिकृति समारोह पास !!! इस तरह से आपको घंटे और मिनट में अंतर या अन्य कोई हेरफेर नहीं करना है।
मैंने मध्यवर्ती परिणामों को देखने के लिए कंसोल में रखा है। इसलिए यह स्पष्ट है कि क्या चल रहा है और पुनरावृत्ति कैसे काम कर रही है। यह सूचना के योग्य कुछ का पता चलता है: मान को दोहराने के लिए मान पहले से ही आईएसओ तिथि प्रारूप में परिवर्तित हो गया है :)। मूल डेटा के साथ काम करने के लिए इस [कुंजी] का उपयोग करें।
var replacer = function(key, value)
{
var returnVal = value;
if(this[key] instanceof Date)
{
console.log("replacer called with key - ", key, " value - ", value, this[key]);
returnVal = this[key].toString();
/* Above line does not strictly speaking clone the date as in the cloned object
* it is a string in same format as the original but not a Date object. I tried
* multiple things but was unable to cause a Date object being created in the
* clone.
* Please Heeeeelp someone here!
returnVal = new Date(JSON.parse(JSON.stringify(this[key]))); //OR
returnVal = new Date(this[key]); //OR
returnVal = this[key]; //careful, returning original obj so may have potential side effect
*/
}
console.log("returning value: ", returnVal);
/* if undefined is returned, the key is not at all added to the new object(i.e. clone),
* so return null. null !== undefined but both are falsy and can be used as such*/
return this[key] === undefined ? null : returnVal;
};
ab = {prop1: "p1", prop2: [1, "str2", {p1: "p1inner", p2: undefined, p3: null, p4date: new Date()}]};
var abstr = JSON.stringify(ab, replacer);
var abcloned = JSON.parse(abstr);
console.log("ab is: ", ab);
console.log("abcloned is: ", abcloned);
/* abcloned is:
* {
"prop1": "p1",
"prop2": [
1,
"str2",
{
"p1": "p1inner",
"p2": null,
"p3": null,
"p4date": "Tue Jun 11 2019 18:47:50 GMT+0530 (India Standard Time)"
}
]
}
Note p4date is string not Date object but format and timezone are completely preserved.
*/
2009-09-28T10:00:00Z
समय के रूप में उसी क्षण का प्रतिनिधित्व नहीं करता हैMon Sep 28 10:00:00 UTC+0200 2009
।Z
एक में आईएसओ 8601 की तारीख यूटीसी का मतलब है, और यूटीसी में 10 बजे के समय में एक अलग पल 0200 में 10 बजे। तारीख को सही समय क्षेत्र के साथ क्रमबद्ध करना चाहते हैं, यह एक बात होगी, लेकिन आप हमें इसे एक प्रतिनिधित्व के लिए अनुक्रमित करने में मदद करने के लिए कह रहे हैं जो कि असमान रूप से, निष्पक्ष रूप से गलत है ।