我正在爲音樂場地的調度系統工作。基本思想是有一個「創建新時間表」頁面,在該頁面上有一個DatePicker日曆(使用AngularUI Bootstrap)。用戶選擇一個日期,然後將表演者添加到時間片中。建成的物體看起來像這樣:纏繞我的頭周圍如何處理日期
{
date: 2017-6-22 00:00:00.000-5:00
venue: VenueID
performances: [
{
performer: performerID,
time: 2017-06-22 22:00:23.231-5:00
},{
perfomer: performer2ID,
time: 2017-06-22 23:00:42.523-5:00
}
]
}
這裏有幾個問題。對於原始日期選擇,我將時間(使用myDate.setHours(0,0,0,0))設置爲午夜,因爲時間並不重要,我只關心實際日期。同樣的時間段,他們的日期並不重要(因爲他們屬於當天的時間表),所以我只關心時間。然後在另一個項目中,我們有一個節點/ mongo應用程序保存這些時間表,並將它們返回到角度項目中的頁面,以便選擇編輯/等的時間表。它通過獲取特定場所的所有時間表來選擇要返回哪些時間,並且執行「if(schedule.date> = new Date()。setHours(0,0,0,0)){add schedule to return list}」
無論如何,要解決實際問題。角度的應用程序會執行所有的日期計算客戶端。我的意思是,我在CST。如果我在日曆上選擇日期並保存該日期的時間表,則EST中的某個人選擇日曆中的同一天並保存日程表,他們在數據庫中有不同的日期。例如,在制定日程安排時,數據庫中的日期爲「2017-06-22 00:00:00.000-5:00」。當EST朋友在同一日期制定日程安排時,它會保存爲「2017-06-22 00:00:00.000-4:00」。
在「選擇一個時間表來查看/編輯」頁,我做這樣的事情:
<select ng-model="schedule" ng-options="s.date|date:'fullDate' for s in schedules" ng-show="schedules.length>=1"></select>
當然,這並不工作,因爲當我的朋友EST着眼於列表中,他看到了正確的日期。但是當我查看他創建的一個日期時,由於「2017-06-22 00:00:00.000-4:00」轉換爲本地時區的日期爲「2017-06-21 23:00:00.000- 5:00" 。
我想TL; DR是我不確定如何處理它,因爲場地和任何創建/編輯時間表的人可能不會共享相同的時區。我希望所有的日期/時間顯示在場地的時區(我有地址,我想我可以通過地理定位找到時區?)。我只是不確定如何去做。
看看[moment.js](https:// momentjs。com /),讓你的生活更輕鬆 – Slim