我有这个
let d = new Date("03-08-2018"); //dd-mm-yyyy
console.log(d.getMonth()); // returns 02, I want 07
我的日期是dd-mm-yy。 getMonth()
认为我正在使用mm-dd-yy。
如何获得正确的月份和日期。
答案 0 :(得分:0)
JS日期以0开头给出月份。因此,请尝试以下方法从日期开始获取月份
let d = new Date("03-05-2018"); //dd-mm-yyyy
console.log(d.getMonth()+1);
如果你想要4,那么你应该添加+2(但我不确定你为什么要4)
let d = new Date("03-05-2018"); //dd-mm-yyyy
console.log(d.getMonth()+2);
答案 1 :(得分:0)
您的日期格式不是标准格式,我强烈建议您不要在客户端网络代码上使用此类代码,因为它的行为方式与客户端有关。
编辑(thx RobG):不要使用内置解析器new Date()
,这会让你遇到麻烦,具体取决于客户端时区,即使你使用正确的格式,月份似乎是正确的认可。
您必须自己创建一些函数来解析字符串并创建一个手动设置年,月,日的Date对象,这将是安全的方法。
手动解析的示例:
let regex = /^(\d{2})-(\d{2})-(\d{4})$/; // each parsing group is day-month-year
let date = '03-05-2018';
let match = regex.exec(date);
let month = +match[2] - 1; // starting at 0, remove -1 if you want 1-based month number
console.log(month); // returns 4 in this example '03-05-2018'

(当然,如果字符串与正确的格式不匹配,你也应该放一些警卫)