2017-02-21 106 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; 
}