2016-10-07 62 views
0

的日期我想要一块类似的代码在AngularJS下面写:比较不同的格式

$scope.isAfterToday= function(inputDate){ 
    if(inputDate > Date.now().toString()){ 
     return true; 
    } else { 
     return false; 
    } 
} 

然而,问题是,参数inputDate进来格式“2016-10-12T00 :00:00“,这与Date.now()函数的格式不同。有没有一种简单的方法可以在这两种格式之间进行转换,而不是从每种格式中解析出月份,日期和年份,然后比较两种格式?

谢谢你的帮助!

+2

您可以像使用[Moment.js]库(http://momentjs.com/) –

+0

看看[文件](http://stackoverflow.com/documentation/javascript/265/date/1204/comparison-date-values#t = 2016100721095820732) –

+0

[与JavaScript比较两个日期]的可能重复(http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript) –

回答

0

您可以包装inputDate标准Date对象,像这样:

new Date("2016-10-12T00:00:00").getTime(); // you'll get 1476230521000 

而且new Date().toISOString();扭转

+0

“*你将得到1476230521000 *”,仅限于同一时区的用户,如果该字符串是用当前规则解析的话。 – RobG

1
$scope.isAfterToday=function(inputDate){ 
    //First get the first time *after* today: 
    var t = new Date().setHours(0,0,0,0);//0 seconds into this morning 
    t.setDate(t.getDate()+1); //midnight tomorrow 
    new Date(inputDate) > t); 
}; 

没有必要的外部库。您可以直接比较Date对象,并且Date构造函数擅长将各种有效的日期字符串作为输入。

对于Date的对象比较,就可以使用普通的数字比较:

< 
> 
<= 
>= 

不要使用==不过,这反而比较它们的值的对象引用。

+0

“*午夜今晚*”通常会在一天结束时发生。将小时设置为0是一天开始的午夜,所以真的是“今天上午的午夜”。 – RobG

+0

@RobG谢谢,纠正了我的评论 – LinuxDisciple

0

您可以使用Date对象将您的inputDate转换为您可以比较的毫秒数。

var convertedInput = new Date(inputDate); 

如果你需要走另一条路,输出的东西,看起来不错,有技术上没有格式化输出。但将毫秒分解成日期并不是那么困难!

var today = new Date(); 
var day = today.getDate(); 
var month = today.getMonth() + 1; //Month is 0-based for some reason 
var year = today.getFullYear(); 
var datenow = year + "-" + month + "-" + day;