使用 MomentJS 将 /Date(####)/ 转换为本地 MM/dd/yyyy 时遇到问题
Having trouble converting /Date(####)/ to MM/dd/yyyy local with MomentJS
使用外部 API 向我发送日期,例如:
/Date(1439596800)/
以上日期为:
August 30, 2015
像这样使用 momentjs:
moment("/Date(1439596800)/").format("MM/DD/YYYY");
给我这个:
01/17/1970
我知道我应该乘以 * 1000 但希望有一个特定的 MomentJS 方法。
时间戳以秒为单位而不是秒并且moment() only understands milliseconds. You can use the moment.unix()函数
moment.unix("1439596800").format("MM/DD/YYYY"); // returns 08/15/2015
但是您仍然需要从 /Date(1439596800)/
中提取 1439596800
,这可以使用简单的正则表达式
来完成
moment.unix(/Date\((\d+)\)/.exec(input)[1]).format("MM/DD/YYYY");
// returns 08/15/2015
比较简单。
您的 API 给出了一个 UNIX 时间戳 - 默认情况下,moment(arg)
假定 arg 自 1970 年 1 月 1 日以来以毫秒为单位传递。
要转换它,您必须先删除 /Date(
和 )\
。
我会使用去除所有非数字字符的正则表达式:
myString = myString.replace(/\D/g,'');
这将只留下数字。
现在,您可以 运行
moment.unix(myString).format("MM/DD/YYYY");
问题是多余的字符。首先摆脱它们并繁殖。
我正在使用正则表达式从括号内获取数字,确保转义斜杠和括号。
var input = "/Date(1439596800)/"
var regex = /\/Date\((\d+)\)\//;
var match = input.match(regex);
if(match){
var stringUnixTs = match[1];
var tsMs = Number(stringUnixTs) * 1000;
var date = new Date(tsMs); // or pass ts directly into moment
} else { }
使用外部 API 向我发送日期,例如:
/Date(1439596800)/
以上日期为:
August 30, 2015
像这样使用 momentjs:
moment("/Date(1439596800)/").format("MM/DD/YYYY");
给我这个:
01/17/1970
我知道我应该乘以 * 1000 但希望有一个特定的 MomentJS 方法。
时间戳以秒为单位而不是秒并且moment() only understands milliseconds. You can use the moment.unix()函数
moment.unix("1439596800").format("MM/DD/YYYY"); // returns 08/15/2015
但是您仍然需要从 /Date(1439596800)/
中提取 1439596800
,这可以使用简单的正则表达式
moment.unix(/Date\((\d+)\)/.exec(input)[1]).format("MM/DD/YYYY");
// returns 08/15/2015
比较简单。
您的 API 给出了一个 UNIX 时间戳 - 默认情况下,moment(arg)
假定 arg 自 1970 年 1 月 1 日以来以毫秒为单位传递。
要转换它,您必须先删除 /Date(
和 )\
。
我会使用去除所有非数字字符的正则表达式:
myString = myString.replace(/\D/g,'');
这将只留下数字。 现在,您可以 运行
moment.unix(myString).format("MM/DD/YYYY");
问题是多余的字符。首先摆脱它们并繁殖。
我正在使用正则表达式从括号内获取数字,确保转义斜杠和括号。
var input = "/Date(1439596800)/"
var regex = /\/Date\((\d+)\)\//;
var match = input.match(regex);
if(match){
var stringUnixTs = match[1];
var tsMs = Number(stringUnixTs) * 1000;
var date = new Date(tsMs); // or pass ts directly into moment
} else { }