[英]Format Javascript Array into JSON by converting all dates into ISOString format
我有對象的javascript數組,其中包含鍵和值。 我在數組中有很多日期,我想將整個數組轉換為正確的JSON,在此過程中,我還將數組中的所有日期轉換為ISOString格式。 我只能使用JQuery,UnderscoreJS或momentz庫。
我的JavaScript數組的初始格式:
{
"primaryPerformerId":"122418",
"primaryGroupingId":"63913",
"primaryCategoryId":"1",
"name":"Test Concert Event",
"venueId":"82",
"placeConfigs":[
{
"placeConfigId":"1232392"
}
],
"defaultLocale":"en_US",
"metas":[
{
"templateId":"201",
"name":"Test Concert Event",
"locale":"en_US"
}
],
"unknownEventDateIndicator":"false",
"unknownEventTimeIndicator":"false",
"eventStartTime":"05/18/2016 08:04 PM",
"trueOnSaleDate":"05/18/2016 08:04 PM",
"firstPresaleDate":null,
"status":"active",
"dynamicAttributes":[
],
"lastChanceDate":"05/18/2016 08:04 PM",
"onSaleDate":"05/15/2016 08:04 PM",
"confirmDate":"05/16/2016 08:04 PM",
"earliestPossibleInhandDate":"05/16/2016 08:04 PM",
"latestPossibleInhandDate":"05/18/2016 08:04 PM"
}
預期格式:
{
"primaryPerformerId":"122418",
"primaryGroupingId":"63913",
"primaryCategoryId":"1",
"name":"Test Concert Event",
"venueId":"82",
"placeConfigs":[
{
"placeConfigId":"1232392"
}
],
"defaultLocale":"en_US",
"metas":[
{
"templateId":"201",
"name":"Test Concert Event",
"locale":"en_US"
}
],
"unknownEventDateIndicator":"false",
"unknownEventTimeIndicator":"false",
"eventStartTime":"2016-05-18T20:04:00.000Z",
"trueOnSaleDate":"2016-05-17T20:03:00.000Z",
"firstPresaleDate":null,
"status":"active",
"dynamicAttributes":[
],
"lastChanceDate":"2016-05-18T20:04:00.000Z",
"onSaleDate":"2016-05-12T23:38:18.775Z",
"confirmDate":"2016-05-11T23:38:18.775Z",
"earliestPossibleInhandDate":"2016-05-10T20:04:00.000Z",
"latestPossibleInhandDate":"2016-05-11T20:04:00.000Z"
}
這應該做。 它使用正則表達式查找日期值,並使用自定義處理程序將JSON.stringify
組合在一起。 我還要指出的是,這會將時區計算為運行此腳本的任何系統時區。 由於輸出時間將采用UTC,因此您可能需要事先確保時區正確。
var o = { "primaryPerformerId":"122418", "primaryGroupingId":"63913", "primaryCategoryId":"1", "name":"Test Concert Event", "venueId":"82", "placeConfigs":[ { "placeConfigId":"1232392" } ], "defaultLocale":"en_US", "metas":[ { "templateId":"201", "name":"Test Concert Event", "locale":"en_US" } ], "unknownEventDateIndicator":"false", "unknownEventTimeIndicator":"false", "eventStartTime":"05/18/2016 08:04 PM", "trueOnSaleDate":"05/18/2016 08:04 PM", "firstPresaleDate":null, "status":"active", "dynamicAttributes":[ ], "lastChanceDate":"05/18/2016 08:04 PM", "onSaleDate":"05/15/2016 08:04 PM", "confirmDate":"05/16/2016 08:04 PM", "earliestPossibleInhandDate":"05/16/2016 08:04 PM", "latestPossibleInhandDate":"05/18/2016 20:04" }; document.body.innerText = JSON.stringify(o, function(key, value) { var res; if(res = /^\\s*([0-9]{1,2})\\s*\\/\\s*([0-9]{1,2})\\s*\\/\\s*([0-9]{1,4})\\s+([0-9]{1,2})\\s*\\:\\s*([0-9]{1,2})(?:\\s*(AM|PM))?\\s*$/i.exec(value)) { value = (o.defaultLocale === 'en_US' ? new Date(res[3], res[1]-1, res[2], res[6] ? (res[6].toUpperCase() === 'PM' ? 12 : 0) + (res[4] === '12' ? 0 : parseInt(res[4])) : res[4], res[5]) : new Date(res[3], res[2]-1, res[1], res[6] ? (res[6].toUpperCase() === 'PM' ? 12 : 0) + (res[4] === '12' ? 0 : parseInt(res[4])) : res[4], res[5]) ).toISOString(); } return value; });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.