【问题标题】:Is this a valid date in JavaScript? [duplicate]这是 JavaScript 中的有效日期吗? [复制]
【发布时间】:2018-01-06 15:37:01
【问题描述】:

我的函数以这种格式返回日历的选定日期:

var returnValue = "6.7.2017"; //day.month.year

当我尝试将它用于新日期时,它不起作用:

var weekdays = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'];
var wkdayname = new Date(returnValue); //Error: returnValue ist NaN
var dayName = weekdays[wkdayname.getDay()];

我想要的只是这个日期的星期几的名称。

你有什么建议吗?

【问题讨论】:

  • 不得不问:你返回returnValue了吗?因为new Date('6.7.2017') 似乎有效
  • 这工作正常。日期支持您提供的格式。你能分享你的代码吗?
  • 试试new Date(returnValue.replace(/\./g, '-'))。如果你对图书馆开放,你应该使用 moment.js。然后你可以做moment(returnValue, "MM.DD.YYYY")。你也可以试试new Date(Date.parse(returnValue))
  • 您的掩码日期对于 javascript "d.m.yyyy" 无效
  • 检查对new Date的引用以正确格式化构造函数MDN

标签: javascript date weekday


【解决方案1】:

日期格式还具有从Date() 识别的格式切换的日期和月份。此函数使用. 和日期优先表示法将日期字符串转换为有效格式:

function transformDate (date){
	var day_month_year = date.split(".")
    return [day_month_year[1],day_month_year[0],day_month_year[2]].join("/")
} 

var returnValue = "6.7.2017"; //This is a string

var weekdays = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'];
var wkdayname = new Date(transformDate(returnValue)); 
var dayName = weekdays[wkdayname.getDay()];
alert(dayName)

【讨论】:

  • 此解决方案在 Firefox 中运行良好!谢谢!
  • 有很多很多重复。您应该完全避免使用解析器,因为使用内置解析器很麻烦。解析一个字符串以格式化另一个由内置解析器解析的字符串没有多大意义。只需解析字符串并将部分交给 Date 构造函数。
  • 是的...我不知道怎么做^^
【解决方案2】:

您可以使用Date.parse() API 验证日期字符串。

但请注意,此 API 的验证有点松散,因为它同时接受 ISO 8601RFC 2822 日期格式。如果它是一个有效的 date,那么 API 会返回 epoch time,然后可以使用它来创建 Javascript Date 对象。否则返回NaN

至于获取day - 您可以使用.getDay() API。

例子:

if (Date.parse("aaabbcc")) {
    console.log("aaabbcc is Valid");
}
else {
    console.log("aaabbcc is invalid");
}

if (Date.parse("6.7.2017")) {
    var date = new Date(Date.parse("6.7.2017"));
    console.log("6.7.2017 is Valid");
    console.log("The day of the week is => " + date.getDay());
}
else {
    console.log("6.7.2017 is invalid");
}

参考资料: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/getDay

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

【讨论】:

  • 看你第二个参考的建议:“不推荐使用Date.parse ... 不同主机解析日期字符串的方式还是有很多差异的,所以应该手动解析日期字符串”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
相关资源
最近更新 更多