我知道这已经很旧了,但我刚好遇到了这个问题。非常感谢Rene Vorndran的初始映射。我想添加一个评论到你的答案,但是不能(没有足够的积分),所以我写下这个答案只是为了补充一些映射,大多数是为了完成Rene Vorndran的答案和Samuel Georges的评论,得出以下结论:
public function convertPhpToJsMomentFormat(string $phpFormat): string
{
$replacements = [
'A' => 'A',
'a' => 'a',
'B' => '',
'c' => 'YYYY-MM-DD[T]HH:mm:ssZ',
'D' => 'ddd',
'd' => 'DD',
'e' => 'zz',
'F' => 'MMMM',
'G' => 'H',
'g' => 'h',
'H' => 'HH',
'h' => 'hh',
'I' => '',
'i' => 'mm',
'j' => 'D',
'L' => '',
'l' => 'dddd',
'M' => 'MMM',
'm' => 'MM',
'N' => 'E',
'n' => 'M',
'O' => 'ZZ',
'o' => 'YYYY',
'P' => 'Z',
'r' => 'ddd, DD MMM YYYY HH:mm:ss ZZ',
'S' => 'o',
's' => 'ss',
'T' => 'z',
't' => '',
'U' => 'X',
'u' => 'SSSSSS',
'v' => 'SSS',
'W' => 'W',
'w' => 'e',
'Y' => 'YYYY',
'y' => 'YY',
'Z' => '',
'z' => 'DDD',
];
foreach ($replacements as $from => $to) {
$replacements['\\' . $from] = '[' . $from . ']';
}
return strtr($phpFormat, $replacements);
}
注意:如果您按照Samuel Georges的评论将转义字符转换,则应保留
A
、
a
和
W
。
注意2:实际上,
u
代表微秒,
v
(自PHP 7.0.0起)代表毫秒。
JS
格式)。 - Erik S