Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用moment.js和locale解析日期_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 使用moment.js和locale解析日期

Javascript 使用moment.js和locale解析日期,javascript,date,momentjs,Javascript,Date,Momentjs,当我使用将日期从西班牙语翻译为英语(使用地区)时,出现“无效日期”错误。奇怪的是,只有在某些日期才会失败 我有一个日期列表,显然是相同的格式(它们在使用相同的库之前被解析)。然后,当我在更改moment.js区域设置(将日期转换为所需语言)后再次解析它时,我得到以下结果: Enero 13º 2017, 6:00:02 Am --> Invalid date Abril 17º 2017, 7:36:03 Pm --> Invalid date Abril 17º 2017, 6:0

当我使用将日期从西班牙语翻译为英语(使用地区)时,出现“无效日期”错误。奇怪的是,只有在某些日期才会失败

我有一个日期列表,显然是相同的格式(它们在使用相同的库之前被解析)。然后,当我在更改moment.js区域设置(将日期转换为所需语言)后再次解析它时,我得到以下结果:

Enero 13º 2017, 6:00:02 Am --> Invalid date
Abril 17º 2017, 7:36:03 Pm --> Invalid date
Abril 17º 2017, 6:00:01 Am --> Invalid date
Mayo 12º 2017, 2:04:19 Pm   --> May 12th 2017, 2:04:19 Pm
Abril 17º 2017, 11:47:17 Pm --> Invalid date
Parse方法(此处初始化格式,因为在其他时刻它可以获得其他值):


也许我错过了什么,但我还没有找到原因。有人能帮我解决这个问题吗?

您可以在解析非英语输入时指定语言环境。您可以使用:

从版本2.0.0开始,可以将区域设置键作为第三个参数传递给
moment()
moment.utc()

可以使用函数更改给定力矩对象的区域设置(同时全局更改区域设置)

这里是一个工作示例:

var格式='MMMM Do YYYY,h:mm:ss a';
$(“.videoDate”)。每个(函数(){
var _text=$(this).text();//提取初始日期
//用西班牙语解析并用英语转换
var _date=时刻(_文本,格式为'es')
.locale('en')
.format('MMMM-Do-YYYY,h:mm:ss-a');//格式
$(this).text(_date);//新的日期设置
});

    2017年12月13日上午6:00:02 2017年4月17日下午7:36:03 2017年12月17日上午6:00:01 2017年5月12日下午2:04:19 2017年11月17日11:47:1
我提供的JSFIDLE看起来有些月份解析不正确。不知道为什么乍一看很好。是的,这是第三个参数。无论如何,当我调用JS函数时,调用方函数会在前面生成一个“moment.locale”(“en”),这应该以同样的方式工作,但看起来format函数中没有使用moment locale。非常感谢您的帮助@VincenzoC@Genaut您想用英语显示日期吗?(类似于将西班牙语日期翻译成英语)太好了!我用
locale()
更新了我的答案,使函数以英语显示日期。
format = 'MMMM Do YYYY, h:mm:ss a';
$(".videoDate").each(function(){
    var _text = $(this).text();//Extract initial date
    var _date = moment(_text, format).format('MMMM Do YYYY, h:mm:ss a');//format
    $(this).text(_date);//new date setting
});