我正在尝试将两个日期字符串传递给new Date(t)
.
我希望两个字符串代表相同的时间,毕竟,如果我省略时间,那不应该是那天的午夜吗?
但是,
new Date("2016-02-16 00:00")
Run Code Online (Sandbox Code Playgroud)
返回2016-02-16,午夜,当地时间如预期,
new Date("2016-02-16")
Run Code Online (Sandbox Code Playgroud)
返回2016-02-16,午夜UTC,这是错误的,或者至少不是我预期的另一个字符串解析的内容.
我会理解,如果它们都具有相同的行为,无论是将时间作为本地时间还是作为UTC返回,但是为什么它们返回不同的东西似乎非常不一致.
作为一种解决方法,每当我遇到没有相应时间戳的日期时,我可以附加"00:00"以获得一致的行为,但看起来这似乎相当脆弱.
我从一个类型为'datetime-local'的INPUT元素中获取此值,因此我必须解决页面元素返回的值,这似乎特别不一致.
我做错了什么,或者我应该采取不同的做法?
我想将Angular UI Datepicker限制在作为变量传入的两个日期之间.我希望在不添加像momentjs这样的库的情况下让它工作,因为这是我需要处理日期的唯一字段.
这是这个问题的一个问题:
http://plnkr.co/edit/zsjpoVZtHqJLIP2RW6vm?p=preview
这是变量:
mycurrentdate = '2016-04-18'
mymindate = '2016-04-01'
mymaxmonth = '2016-05-01'
mymaxdate will be calculated from mymaxmonth to be
mymaxdate = '2016-05-31'
Run Code Online (Sandbox Code Playgroud)
我的实际最大日期将是mymaxmonth的最后一天
$scope.maxDate = new Date(
$scope.mymaxmonth + (TO THE END OF THE MONTH)
);
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,运行它会new Date()
返回给定日期前一天的日期.例如:
$scope.minDate = new Date(
$scope.mymindate
);
Run Code Online (Sandbox Code Playgroud)
$ scope.minDate返回Wed Mar 30 2016 17:00:00 GMT-0700 (PDT)
我查找了为什么它返回3月30日而不是4月1日的原因,这似乎是时区错误?
我想设置一个'2016-04-01'的mymindate并获取mymaxdate ='2016-05-31'并禁用此范围之外的所有日期.我已经阅读了Javascript日期和时间初学者指南,并在此处进行了尝试.
在控制器中我有:
$scope.mymindate = '2016-04-01';
$scope.mymaxmonth = '2016-05-01'; //want mymaxdate to be '2016-05-31'
$scope.minDate = new Date($scope.dt.getFullYear(), …
Run Code Online (Sandbox Code Playgroud)