我有一系列不同的日期,但它們只包括月份和年份。有沒有辦法僅從這兩件事中獲得 unix 時間戳?我必須遍歷陣列以獲取所有時間戳。我有解決方案,但解決方案又丑又長。有沒有更簡單/更簡單的方法來減少我擁有的代碼量?
for(var i=0, len = arr.length; i < len; i ){
arr[i]['newDate'] = [];
var jan = day * 31;
var year = 31556926;
var day = 86400;
if(arr[i].post_date.includes("Janurary")){
//january
var str = arr[i].post_date.substr(8);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = jan yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("February")){
//february
var str = arr[i].post_date.substr(8);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = feb yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("March")){
//march
var str = arr[i].post_date.substr(6);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = mar yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("April")){
//april
var str = arr[i].post_date.substr(6);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = apr yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("May")){
//may
var str = arr[i].post_date.substr(4);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = may yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("June")){
//june
var str = arr[i].post_date.substr(5);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = jun yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("July")){
//july
var str = arr[i].post_date.substr(5);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = jul yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("August")){
//august
var str = arr[i].post_date.substr(7);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = aug yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("September")){
//september
var str = arr[i].post_date.substr(10);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = sep yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("October")){
//october
var str = arr[i].post_date.substr(8);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = oct yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("November")){
//november
var str = arr[i].post_date.substr(9);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = nov yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
if(arr[i].post_date.includes("December")){
//december
var str = arr[i].post_date.substr(9);
var current = parseInt(str);
var yearTotal = (current - 1970) * year;
var unix = dec yearTotal;
var dateString = "@" unix.toString();
arr[i].newDate.push(dateString);
}
var jan = day * 31;
var feb = day * 28;
var mar = day * 31;
var apr = day * 30;
var may = day * 31;
var jun = day * 30;
var jul = day * 31;
var aug = day * 31;
var sep = day * 30;
var oct = day * 31;
var nov = day * 30;
var dec = day * 31;
}
我的陣列看起來像這樣
var arr = [
{
"post_title": "title",
"post_date": "December 2021"
},
{
"post_title": "title",
"post_date": "November 2021"
},
{
"post_title": "title",
"post_date": "October 2021"
},
{
"post_title": "title",
"post_date": "September 2021"
},
{
"post_title": "title",
"post_date": "August 2021"
},
{
"post_title": "title",
"post_date": "July 2021"
},
{
"post_title": "title",
"post_date": "June 2021"
}
]
我的結果看起來像
var arr = [
{
"post_title": "title",
"post_date": "December 2021",
"newDate": [
"@1612081626"
]
},
{
"post_title": "title",
"post_date": "November 2021",
"newDate": [
"@1611995226"
]
},
{
"post_title": "title",
"post_date": "October 2021",
"newDate": [
"@1612081626"
]
},
{
"post_title": "title",
"post_date": "September 2021",
"newDate": [
"@1611995226"
]
},
{
"post_title": "title",
"post_date": "August 2021",
"newDate": [
"@1612081626"
]
},
{
"post_title": "title",
"post_date": "July 2021",
"newDate": [
"@1612081626"
]
},
{
"post_title": "title",
"post_date": "June 2021",
"newDate": [
"@1611995226"
]
}
]
uj5u.com熱心網友回復:
您可以簡單地new Date()使用字串中的月份(轉換為索引)和年份創建一個。
這里使用月份陣列將命名月份轉換為索引,并將結果除以 1000,因為 javascript 以毫秒為單位存盤時間,而 unix 使用秒。
const arr = [{ post_title: 'title', post_date: 'December 2021', }, { post_title: 'title', post_date: 'November 2021', }, { post_title: 'title', post_date: 'October 2021', }, { post_title: 'title', post_date: 'September 2021', }, { post_title: 'title', post_date: 'August 2021', }, { post_title: 'title', post_date: 'July 2021', }, { post_title: 'title', post_date: 'June 2021', },];
const months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December',];
const result = arr.map((o) => {
const [month, year] = o.post_date.split(' ');
return {
...o,
unix_timestamp: new Date(year, months.indexOf(month)).valueOf() / 1000,
};
});
console.log(result);
注意:月份是 0 索引,從一月的 0 開始到十二月的 11
uj5u.com熱心網友回復:
你真的不需要查找表:
const arr = [{ post_title: 'title', post_date: 'December 2021', }, { post_title: 'title', post_date: 'November 2021', }, { post_title: 'title', post_date: 'October 2021', }, { post_title: 'title', post_date: 'September 2021', }, { post_title: 'title', post_date: 'August 2021', }, { post_title: 'title', post_date: 'July 2021', }, { post_title: 'title', post_date: 'June 2021', },];
const result = arr.map(d =>
({...d,
unix_timestamp: new Date(d.post_date.replace(" "," 1. ") " 00:00:00").valueOf() / 1000}));
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/395988.html
標籤:javascript 数组 Unix Unix时间戳 刮
