日期()在[angular-ui datepicker指令]返回昨天的日期

问题描述:

我有日期选择器使用angular-ui datepicker directive,但是当我选择一个日期时,它显示前一天。并通过控制台尝试,结果仍然存在。日期()在[angular-ui datepicker指令]返回昨天的日期

我不明白这个问题背后的主要原因。

Date

+0

您选择的日期正确的工作,但角转换日期为根据时区, 选择日期时间22:00:00.000Z和你有GMT + 0200即22 + 2即第二天。 –

当一个字符串传递给它的构造函数的日期只能识别少数几种格式。您需要使用Date.parse,它可以识别更多的格式,并将传入的日期字符串的表示形式表示为自Epoch以来的毫秒数,反过来,该数据将被构造函数接受并生成所需的日期对象。

var date = new Date(Date.parse("2015-07-27T22:00:00.000Z")); 

documentation指定您需要通过日期

new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); 

所以你应该把它作为:

new Date(2015,07,27,22,00,00,0000000000); 

,否则你需要使用Date.parse解析日期正确。

附注:moment.js很好处理所有这些问题。

可能似乎对你

 <!doctype html> 
    <html lang="en"> 
      <head> 
     <meta charset="utf-8"> 
     <title>jQuery UI Datepicker - Display month &amp; year menus</title> 
     <link rel="stylesheet" 
    href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
     <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
     <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
     <link rel="stylesheet" href="/resources/demos/style.css"> 
    <script> 
     $(function() { 
     $("#datepicker").datepicker({ 
     changeMonth: true, 
    changeYear: true 
     }); 
     }); 
    </script> 
    </head> 
    <body> 

    <p>Date: <input type="text" id="datepicker"></p> 


    </body> 
    </html>