Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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问题_Javascript_Date_Date Format - Fatal编程技术网

将字符串转换为日期的Javascript问题

将字符串转换为日期的Javascript问题,javascript,date,date-format,Javascript,Date,Date Format,我无法在我的环境中将字符串正确转换为日期。我的字符串是英文-澳大利亚格式dd/mm/yyyy,但当我转换为日期时,我认为它采用了不同的格式 var dateString = "27/10/2015" var testdate = new Date(dateString); testdate现在的值为: 2017年3月10日星期五00:00:00 GMT+1100(澳大利亚东部夏时制) 有人能帮忙吗 请尝试使用javascript函数获取日、月和年 today = new Date(); dd

我无法在我的环境中将字符串正确转换为日期。我的字符串是英文-澳大利亚格式dd/mm/yyyy,但当我转换为日期时,我认为它采用了不同的格式

var dateString = "27/10/2015"
var testdate = new Date(dateString);
testdate现在的值为:

2017年3月10日星期五00:00:00 GMT+1100(澳大利亚东部夏时制)


有人能帮忙吗

请尝试使用javascript函数获取日、月和年

today = new Date();
dd = today.getDate();
mm = today.getMonth();
yyyy = today.getFullYear();

  if (dd < 10) { dd = '0' + dd; }
  if (mm < 10) { mm = '0' + mm; }

  today = dd + '/' + mm + '/' + yyyy 
today=新日期();
dd=today.getDate();
mm=今天。getMonth();
yyyy=today.getFullYear();
如果(dd<10){dd='0'+dd;}
如果(mm<10){mm='0'+mm;}
今天=dd+'/'+mm+'/'+yyyy
这将返回格式化的日期,如“27/10/2015”

日期()不支持您使用的格式日/月/年,因此您会得到错误的结果,您可以将其与此字符串一起使用m/d/y像这样拆分日期字符串

var tmp = "15/02/2016".split('/');//you get ["15","02","2016"]
var testdate = new Date(tmp[2],tmp[1]-1,tmp[0]);//months are zero based array ,so we subtract -1
console.log(testdate);//Mon Feb 15 2016 00:00:00 GMT+0200 (GTB Standard Time)

希望有帮助,祝你好运。

在创建日期对象之前,只需使用一个简单的正则表达式替换即可。JS中的日和月订单混乱。无法使用自己的自定义格式来匹配任何日期字符串


var testdate=新日期(dateString.replace(/(\d*)\/(\d*)(.*)/,“$2/$1$3”)

日期字符串的解析几乎完全依赖于实现。中指定了对有限数量的ISO 8601格式的支持,但并非所有正在使用的浏览器都支持这些格式

大多数浏览器支持多种格式,包括m/d/y,但没有规范要求它们支持,因此不应该期望它们会支持

您最好手动解析字符串。图书馆可以提供帮助,但很少是必要的。要将格式为d/m/y的日期解析为本地日期(即考虑系统时区偏移)并验证部分,请考虑:

/*将d/m/y格式的日期字符串解析为本地日期
**
**@param{string}s-要分析的字符串
**@returns{Date}-如果任何日期值超出范围,则返回
**时间值为NaN的日期(根据ECMAScript 2015)
*/
函数parseDMY(s){
var b=s.split(/\D/);
var d=新日期(b[2],--b[1],b[0]);
返回d&d.getMonth()==b[1]?d:新日期(NaN);
}

文件编写(parseDMY(“2015年10月27日”)为了解决我的问题,我遵循了visibleman在我的og问题评论中提供的链接。 我现在正在使用date.js库。我过去曾尝试过,但不知道文化信息设置:

我现在使用2个独立的文件,允许用户指定他们想要的日期格式


感谢大家的帮助。

在转换时尝试添加时区类似的讨论,如果将来有更多日期需要从字符串转换,我强烈建议使用momentjs库。谢谢visibleman。链接给了我答案。我现在使用的是date.jsOp要求字符串到日期的转换,这似乎是相反的。对ECMAScript 2015中指定格式以外的字符串的解析完全依赖于实现,因此不应依赖于实现。例如,给定
新日期('31/2/2015')
大多数浏览器将返回“无效日期”,而Firefox将返回2017年7月2日的日期。除了大多数浏览器之外,没有理由期望浏览器支持m/d/y。没有要求他们支持的规范,不同的浏览器对它的支持也不同(例如,关于越界值)。
var tmp = "15/02/2016".split('/');//you get ["15","02","2016"]
var testdate = new Date(tmp[2],tmp[1]-1,tmp[0]);//months are zero based array ,so we subtract -1
console.log(testdate);//Mon Feb 15 2016 00:00:00 GMT+0200 (GTB Standard Time)