我正在開發一個類似于 foodpanda 的食品應用程式,我面臨的問題是餐廳的開始日是星期一,結束日是星期五,我試圖限制用戶不要在星期六和星期日(或任何其他日期)訂購(時間表)餐廳將停止服務)。
我的資料庫中也有開始日和結束日的值。
uj5u.com熱心網友回復:
您可以使用
let x = new Date()
x.getDay()
如果您希望日期是字串而不是數字(在本例中為 0 到 6),請使用
var options = { weekday: 'long'};
console.log(new Intl.DateTimeFormat('en-US', options).format(x));
現在將第一個用于以下解決方案:
let x = new Date().getDay()
if (x < 5) return // cancel order here.
uj5u.com熱心網友回復:
這似乎是評估一天是否在一個范圍內(數字范圍內的數字)的問題。
假設您使用從周日到周六的天數為 0 到 6,它應該是這樣的:
// Evaluating if a day is inside working shift ('_from' starting shift, '_to' ending shift)
function inRange(day, _from, _to) {
if(day >= _from && day <= _to)
return true;
return false;
}
編輯:經過深思熟慮,我們還沒有考慮到一些邊緣情況。
假設您周一沒有作業日(這在某些國家/地區可能很常見)。如果您嘗試使用范圍對其進行評估,您會發現星期日也是非作業日(因為星期日為 0,但范圍從星期一開始,即 1)。
因此,我們需要更改邏輯以檢查詢問的日期是否不作業。
最簡單的方法是創建一個字典,將每一天映射到一個布林值,它會說明那天是否空閑:
let workingDays = {
Sunday: true,
Monday: true,
Tuesday: true,
Wednesday: true,
Thursday: true,
Friday: true,
Saturday: true
}
然后,您只需要像這樣指定非作業日
// Working everyday except by Monday
workingDays.Monday = false;
最后,您可以執行驗證以檢查餐廳是否會在要求的日期營業
// Am I working on Monday?
if(workingDays.Monday) {
// do something
} else {
// nope. Come another day.
}
您還可以將欄位名稱指定為字串,如果您想使用變數進行檢查,這將很有用
let requestedDay; // fill this variable somewhere else
...
// is the requested day available?
if(workingDays[requestedDay]) {
// Do something
}
最后,由于getDay()的回傳值是一個從 0 到 6 的整數,您可能需要按索引搜索:
// Monday == 1
if( workingDays[Object.keys(workingDays)[1]] )
// blabla
或者你可以把它包裝成一個函式來提高可讀性
// Wrap function inside workingDays dictionary
workingDays.at = function(n) { return this[Object.keys(this)[n]] };
// Usage
workingDays.at(1); // gives Monday status (boolean)
最終代碼:
// Creating dictionary
let workingDays = {
Sunday: true,
Monday: true,
Tuesday: true,
Wednesday: true,
Thursday: true,
Friday: true,
Saturday: true,
at: function(n) { return this[Object.keys(this)[n]] }
}
// Setting a day as non available
workingDays.Monday = false;
// or
workingDays["Monday"] = false;
// or
workingDays.at(1) = false;
// Verifying whether a given day is available
if(workingDays[givenDay]) {
// blabla
}
// or
if(workingDays.at(number)) {
// blabla
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/323865.html
標籤:javascript 节点.js 天
下一篇:nodejs中的遠程調度
