2017-02-21 156 views
1

我对我的应用程序使用AngularJS,日期对象是$ scope.ProductionDate。如何从当前时间减去AngularJS中的一些小时

从上午5:00 2017年2月21日(2月21日)到4:59 2017年2月22日(2月22日)

我想ProductionDate值是2017年2月21日。

P.S.这里2月21日只是一个例子。每日我在给定的时间要求相同的价值。

我可以知道如何得到它吗?

function Ctrl($scope) 
 
{ 
 
    $scope.ProductionDate = new Date(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app ng-controller="Ctrl"> 
 
    ProductionDate: {{ProductionDate | date:'yyyy-MM-dd'}}<br/> 
 
</div>

+0

? –

+0

我的意思是从今天早上5:00到明天早晨4:59 AM我希望日期成为今天的日期 – Ranger

+0

Moment.js(https://momentjs.com/)值得一看。我有JS或甚至是Angular的方法来做这件事,但是在计算和格式化日期时,没有什么比使用moment.js简单,特别是如果您的项目中可能还有其他需求时。 –

回答

3

您可以减去分钟和小时从Date()对象的JavaScript。

function Ctrl($scope) 
{ 
    var now = new Date(); 
    now.setHours(now.getHours()-4); 
    now.setMinutes(now.getMinutes()-59); 
    $scope.ProductionDate = now; 
} 
+0

我不是这样问的。从今天早上5:00到明天早上4:59 AM我希望日期成为今天的日期 – Ranger

+0

@Ranger我已更新以符合您的评论。您可能需要删除分钟行,只需减去5小时。你可以测试看看哪些工作,并让我知道。我不是在哪里我可以测试它来确认。 – Stephan

1

看来,要减去5小时,所显示的日期较早。 这里是一个SO帖子,它解释了如何修改Date对象:Adding hours to Javascript Date object?(从不知道标题 - 你可以使用相同的原则来减去小时数)。

同样的操作也可以通过设置所需的时区来完成。

+0

提及的时区特别精明。对于其他读者来说,Deividas认为奇数小时的原因是因为该应用是针对除服务器以外的其他区域的用户。 – Stephan

1

只是检查日期时间为0你要什么有生产日期发生之间和5或不

function Ctrl($scope) 
{ 
    var now = new Date(); 
    if(now.getHours() < 5 && now.getHours() >= 0){ 
     // Subtract one day 
     now.setDate(now.getDate() - 1); 
    } 
    $scope.ProductionDate = now; 
} 
相关问题