$scope.notAvailableDayClick=function(val1,date){
console.log("day clcik")
var startDate=$filter('date')(date,'yyyy-MM-dd')
var endDate=new Date(startDate)
endDate.setMinutes(59)
endDate.setHours(23)
}
日期是2015-01-16 如果我这样做
new Date(date)
Thu Jan 15 2015 16:00:00 GMT-0800 (Pacific Standard Time)
所以我必须选择AngularJS
var startDate=$filter('date')(date,'yyyy-MM-dd')
但现在我需要startDate.getTime()
,错误发生我认为它需要它作为一个字符串
答案 0 :(得分:3)
根据角度docs,过滤器会以请求的格式返回String
。 Date
constructor通常接受ISO8601格式,但有些浏览器支持许多格式,因为我记得。可能不支持您的格式yy-MM-dd
。
我希望变量date
是有效的Date
对象,在这种情况下,为什么不使用它而不是使用角度过滤器创建的格式化字符串?
var endDate = new Date(date);
endDate.setMinutes(59);
endDate.setHours(23);
您还有一个Date
构造函数,它接受格式
new Date(year, month[, date[, hour[, minutes[, seconds[, milliseconds]]]]]);
所以,如果您拥有的是2015-01-16
,那么您可以通过以下方式获得当天的午夜:
var startDate = "2015-01-16";
var year = parseInt(startDate.split('-')[0], 10);
var month = parseInt(startDate.split('-')[1], 10) - 1;
var year = parseInt(startDate.split('-')[2], 10);
var endDate = new Date(year, month, date, 23, 59);
答案 1 :(得分:2)
只需使用原始日期即可创建endDate
而非角度过滤版
var endDate=new Date(date);
endDate.setMinutes(59);
endDate.setHours(23);
答案 2 :(得分:2)
最佳选择是使用ISO-String,因为Google Chrome支持以下格式:MM-dd-yyyy。在Mozilla中,此格式提供无效日期。
new Date('MM-dd-yyyy')
因此在Angular中使用Iso-String,可以按如下方式进行:
new Date($filter('date')(yourdDate,'yyyy-MM-ddTHH:mm:ss.sssZ'))