我有一个日期,格式是2014年5月11日太阳。如何使用JavaScript将其转换为2014-05-11 ?
函数taskDate(dateMilli) {
var d = (new Date(dateMilli) + ")。分割(' ');
D [2] = D [2] + ',';
返回[d[0], d[1], d[2], d[3]]。加入(' ');
}
var datemilli =日期。解析(' 2014年5月11日');
console.log (taskDate (datemilli));
上面的代码给了我相同的日期格式,2014年5月11日。我该如何解决这个问题?
PHP兼容的日期格式
下面是一个小函数,它可以接受与PHP函数date()相同的参数,并在JavaScript中返回日期/时间字符串。
注意,并不是PHP中的所有date()格式选项都受支持。您可以扩展parts对象来创建缺少的格式令牌
/**
* Date formatter with PHP "date()"-compatible format syntax.
*/
const formatDate = (format, date) => {
if (!format) { format = 'Y-m-d' }
if (!date) { date = new Date() }
const parts = {
Y: date.getFullYear().toString(),
y: ('00' + (date.getYear() - 100)).toString().slice(-2),
m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
n: (date.getMonth() + 1).toString(),
d: ('0' + date.getDate()).toString().slice(-2),
j: date.getDate().toString(),
H: ('0' + date.getHours()).toString().slice(-2),
G: date.getHours().toString(),
i: ('0' + date.getMinutes()).toString().slice(-2),
s: ('0' + date.getSeconds()).toString().slice(-2)
}
const modifiers = Object.keys(parts).join('')
const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')
return format
.replace(reDate, $0 => parts[$0])
.replace(reEscape, ($0, $1) => $1)
}
// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"
Gist
以下是formatDate()函数的更新版本和其他示例的要点:https://gist.github.com/stracker-phil/c7b68ea0b1d5bbb97af0a6a3dc66e0d9
当ES2018滚动时(在chrome中工作),你可以简单地正则化它
(new Date())
.toISOString()
.replace(
/^(?<year>\d+)-(?<month>\d+)-(?<day>\d+)T.*$/,
'$<year>-$<month>-$<day>'
)
2020-07-14
或者如果你想要一些非常多功能,没有任何库
(new Date())
.toISOString()
.match(
/^(?<yyyy>\d\d(?<yy>\d\d))-(?<mm>0?(?<m>\d+))-(?<dd>0?(?<d>\d+))T(?<HH>0?(?<H>\d+)):(?<MM>0?(?<M>\d+)):(?<SSS>(?<SS>0?(?<S>\d+))\.\d+)(?<timezone>[A-Z][\dA-Z.-:]*)$/
)
.groups
哪一个结果提取了以下内容
{
H: "8"
HH: "08"
M: "45"
MM: "45"
S: "42"
SS: "42"
SSS: "42.855"
d: "14"
dd: "14"
m: "7"
mm: "07"
timezone: "Z"
yy: "20"
yyyy: "2020"
}
你可以像这样用replace(…, < d > / < m > /美元\ ' < yy > @ < H >:美元$ < MM > '),在顶部,而不是.match(…)。群体
14/7/'20 @ 8:45
格式化并从hashmap数据中查找最大值和最小值:
var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};
function findMaxMinDate(obj){
let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
let min = new Date(Math.min.apply(null, arr)).toLocaleDateString();
let max = new Date(Math.max.apply(null, arr)).toLocaleDateString();
return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}
console.log(findMaxMinDate(obj));