【发布时间】:2019-03-20 17:42:19
【问题描述】:
我正在向浏览器呈现本地 JSON,并且每个项目都包含 ISO 8601 时间的修改日期(例如“2019-03-19T18:50:39Z”)。计划是这样,如果创建日期超过 30 天,那么它将在 div 中隐藏。
我应该将时间转换为更易读的格式(例如 03/19/2019)吗?会更容易合作吗?
可以随时添加新的 JSON 数据,这就是为什么我需要让我的代码是动态的。这也是我为此苦苦挣扎的部分原因。
JS sn-p:
import testjson from './test.json';
export default class {
constructor() {
}
loadNewCourses() {
let newCrs = testjson.d.results
.sort(function(a, b) { // sorts by newest
return (a.Created < b.Created) ? 1 : ((b.Created < a.Created) ? -1 : 0)
})
.filter((el, idx, self) => { // no duplicates
return (idx === self.map(el => el.Category).indexOf(el.Category))
})
.map(x => {
return {
"Category": x.Category,
"Title": x.Title,
"Description": x.Description,
"Created": x.Created
}
})
$.each(newCrs, function(idx, val) { // ---- does this look right?
let current = new Date();
let expiry = new Date(val.Created)
if (current.getTime() > expiry.getTime()) {
$('.categoryName').hide();
} else if (current.getTime() < expiry.getTime()) {
$('.categoryName').show();
}
})
let curIndex = 0;
$.each(newCrs, function(idx, val) {
curIndex++; // this line must be here
let targetDiv = $("div.new-training-div > div[col='" + curIndex + "']");
let modalTrigger = $('<div />', {
'class': 'categoryName',
'data-category': val.Category,
'data-target': '#modal-id',
'data-toggle': 'modal',
'text': val.Category
});
modalTrigger.prepend("<span class='triangle-right'>▸</span>");
targetDiv.append(modalTrigger);
if(curIndex == 4) {
curIndex = 0;
}
})
} // ------------------ loadNewCourses
}
JSON sn-p:
},
"FileSystemObjectType": 0,
"Id": 80,
"Title": "Rome",
"Category": "WorldCapitals",
"Description": "A capital city (or simply capital) is the municipality exercising primary status in a country, state, province, or other administrative region, usually as its seat of government.",
"TopTrainingCourse": false,
"VideoLink": "https:\/\/www.google.com",
"ID": 80,
"Modified": "2019-03-19T18:50:39Z",
"Created": "2019-03-19T18:50:39Z"
}
...etc
【问题讨论】:
-
Date.now() - new Date("2019-03-19T18:50:39Z").getTime()将为您提供从现在到该日期之间的毫秒数。如果该毫秒数超过 30 天,请不要显示 -
当然,isotime 似乎没有时区,所以第一次减去可能应该是 UTC 时间
-
"我应该将时间转换成更易读的格式":仅当您希望人类阅读时。对于使用其他格式的绝大多数人来说,像 MM/DD/YYYY 这样的格式是模棱两可的。
标签: javascript jquery json date datetime