λ΄ node.js νλ‘μ νΈμ ν¨κ» moment.jsλ₯Ό μ¬μ©νκ³ μμ΅λλ€.
isWithinTime: function(end) {
var moment = require('moment');
var now = moment(new Date()).format('HH:mm');
var end = moment(new Date(end)).format('HH:mm');
if (now.toString() > end.toString()) {
return false;
}
return true;
}
μκ°λ§ HH:mm νμμΌλ‘ λΉκ΅νκ³ μΆμ΅λλ€. κ·Έλ¬λ μλνμ§ μκΈ° λλ¬Έμ
'7:00' > '2:00'
κ±°μ§μ λ°νν©λλ€. HH:mmμ λΉκ΅νλ λ°©λ²μ λν μμ΄λμ΄κ° μμ΅λκΉ?
μΌλ°μ μΌλ‘ μ’ λ£ μκ° λ μ§μ μ κ²½ μ°μ§ μλλ€λ©΄ μκ°κ³Ό λΆμ λͺ μμ μΌλ‘ μΆμ νλ κ²μ΄ λ λ«μ§λ§ λ¬Όλ‘ λλ λΉμ μ μ±μ λν΄ μ무 κ²λ λͺ¨λ¦ λλ€. λ°λΌμ μ§μ μλ΅νλ €λ©΄ λΆμ λ°ννλ μ ν¨μλ₯Ό μ μνμμμ€.
var minutesOfDay = function(m){
return m.minutes() + m.hours() * 60;
}
λ€μμ νμΈνμμμ€.
return minutesOfDay(now) > minutesOfDay(end);
μ μ³λκ³ , moment()
λ moment(new Date())
μ κ°μ μΌμ νλ―λ‘ ν
μ€νΈλ₯Ό μ μ½ν΄μΌ ν©λλ€.
λ€λ₯Έ MomentJS μ§λ¬Έμ μ΄ν΄λ³Έ νμλ λ¨μν λ κ°μ λ€λ₯Έ μκ° μ λΉκ΅νκΈ° μν΄ momentλ₯Ό μ¬μ©νλ λ°©λ²μ λν΄ μ¬μ ν μ΄λ¦¬λ₯μ ν©λλ€.
μμΌ/λ μ§λ₯Ό 무μν΄μΌ ν©λλ€.
μ¬μ© μ¬λ‘:
κ΅¬μ± νμΌμμ μμ λ° μ’
λ£ μκ°μ΄ ν¬ν¨λ μΌμ μ μ½κ³ μμ΅λλ€. μ΄κ²μ Node.jsλ₯Ό μ¬μ©νμ¬ μνλ©λλ€.
μμ μκ° = μ€ν 6μ 30λΆ
μ’ λ£ μκ° = μ€μ 3μ 30λΆ
var currentTime= moment(); // e.g. 11:00 pm
var startTime = moment('06:30 pm', "HH:mm a");
var endTime = moment('03:30 am', "HH:mm a");
amIBetween = currentTime.isBetween(startTime , endTime);
console.log(amIBetween); // returns false. if date ignored I expect TRUE
λ΄ μλ리μ€λ κΈ°μ μ μΌλ‘ μ΄νμ κ±Έμ³ μμΌλ©° κ·Έκ²μ΄ κ±°μ§μΈ μ΄μ λ₯Ό μ΄ν΄ν©λλ€.
TRUEλ₯Ό λ°ννλ μκ°μ΄ νμν©λλ€. μ¦, currentTimeμ startTime λ° endTimeμ΄λ©° ν΄λΉ λ²μμ μν©λλ€.
λλ endTime μκ°μ΄ > 12μΈμ§ νμΈνμ¬ λ¬Έμ λ₯Ό ν΄κ²°νλ€κ³ μκ°νκ³ ν루λ₯Ό μΆκ°νμ¬ λ€μ λ μ΄λΌλ μκ°μ μ΄ν΄νλλ‘ ν©λλ€. μ
if (startTime.hour() >=12 && endTime.hour() <=12 )
{
endTime.add(1, "days"); // handle spanning days
}
var isBetween = currentTime.isBetween(startTime, endTime); // TRUE
κ·Έλ¬λ currentTimeμ΄ μμ μ΄νμ΄κΈ°λ νλ©΄ μ€λ¨λ©λλ€. μλ₯Ό λ€μ΄
01:30amμ 06:30pmκ³Ό 03:30am μ¬μ΄μ κ³ λ €λμ§ μμ΅λλ€. λν μμΌμ΄ λ€λ₯΄κΈ° λλ¬Έμ λλ€.
μ΄ μμ μ μννκ³ λ¨μν λ μ§/λ μ§λ₯Ό 무μνκΈ° μν λ€λ₯Έ μ μ μ¬νμ΄ μμ΅λκΉ?
μ΄κ²μ΄ μ΄λ κ² λ³΅μ‘νλ€λ κ²μ΄ λ―ΏκΈ°μ§ μμ§λ§ μλ§λ λ€μκ³Ό κ°μ κ²μ λλ€.
λ€μμ λ λͺ μμ μΌλ‘ μλνλ κ²½μ°μλ μ¬λ¬ λ μ κ±Έμ³ λ¬Έμ κ° λ°μνλ€λ μΆκ° μ€λͺ μ λλ€.
var currentTime= moment('11:00p', "HH:mm a");
var startTime = moment('06:00p', "HH:mm a");
var endTime = moment('03:30a', "HH:mm a");
currentTime.toString(); //"Fri Oct 28 2016 23:00:00 GMT-0400"
startTime.toString(); // "Fri Oct 28 2016 18:00:00 GMT-0400"
endTime.toString(); // "Fri Oct 28 2016 03:30:00 GMT-0400"
currentTime.isBetween(startTime, endTime); // false
currentTime.isAfter(endTime) && currentTime.isBefore(startTime); //false
currentTime.isAfter(startTime) && currentTime.isBefore(endTime); //false
_day/date_κ° μκ°μ μΌλ‘ κ³ λ €λκΈ° λλ¬Έμ κ·Έλ€μ΄ κ±°μ§μ΄ λ κ²μ΄λΌλ κ²μ΄ λΆλͺ ν κ² κ°μ΅λλ€. μ΄κ²μ λ΄κ° μ£Όμμνλ €κ³ νλ κ²μ λλ€.
λ€μμ΄ μλν©λλ€.
endTime.add(1, "days");
currentTime.isBetween(startTime, endTime); // TRUE
κ·Έλ¬λ μ΄κ²μ START TIMEμ΄ μ€μ 12μ μ΄μ μΈμ§ && ENDTIMEμ΄ μ€μ 12μ μ΄νμΈμ§ νμΈν λ€μ ENDTIMEμ 1μΌμ μΆκ°ν΄μΌ ν¨μ μλ―Έν©λλ€.
λλ λΉμ μ΄ "μμΌμ 무μνλ€"λ κ²μ΄ λ¬΄μ¨ λ§μΈμ§ μ μ΄ν΄νμ§ λͺ»νλ κ² κ°μ΅λλ€. μ΄ λ κ°μ§λ₯Ό λΉκ΅νλ€λ©΄
var startTime = moment('06:00p', "HH:mm a");
var endTime = moment('03:30a', "HH:mm a");
μ΄λ»κ²λ μμ€ν
μ λΉμ μ΄ 3μ 30λΆ _λ΄μΌ_μ μλ―Ένλ€λ κ²μ μμμΌ ν©λλ€. λ΄ λ§μ, κ·Έκ²μ΄ μ΄λ»κ² μλν μ μλ¨ λ§μΈκ°? νμ€ν, λΉμ μ μ€μ 3μ 30λΆμ΄ μ€ν 6μ μ΄νλΌλ μμΌ μ λ³΄κ° μλ€κ³ μκ°νμ§ μμ΅λλ€...λ¬Έμ λ Momentμ μλ μΆκ° 컨ν
μ€νΈκ° μλ€λ κ²μ
λλ€. μ¦, endTime
λ startTime
λ€μμ μ¬ κ²μΌλ‘ μμλ©λλ€. κ·Έκ²μ λΉμ μ λ³μ μ΄λ¦μμ λΆλͺ
νμ§λ§ Momentλ κ·Έκ²μ μ μ μκ³ μ μλ μμ΅λλ€. λΉμ μ κ·Έκ²μ λ§ν΄μΌν©λλ€.
κ·Έλ λ€λ©΄ μ΄κ²μ μ΄λ»μ΅λκΉ?
if (startTime.isAfter(endTime)){
endTime.add(1, 'days');
}
μ, νΌλμ μ΄ν΄ν©λλ€. μ°λ¦¬κ° "μ€μ 3μ 30λΆ"μ μλ―Ένλ€λ κ²μ μμ§ λͺ»νλ©΄ κ·Έ λ€μλ μ΄ κΉλ€λ‘μ΅λλ€.
μμΌ/λ μ§ λ¬΄μ:
_"μ€ν 9μμμ μλ²½ 3μ μ¬μ΄κ° μ€ν 11μμ
λκΉ?"λΌκ³ λ¬ΌμΌλ©΄ μ λ΅μ΄ λ κ²μΌλ‘ κΈ°λ νλ€ .
"μ€μ 3μμμ μ€ν 9μ μ¬μ΄κ° μ€ν 11μμ
λκΉ?"λΌκ³ 묻λλ€λ©΄ λλ λλ΅μ΄ κ±°μ§ μΌ κ²μΌλ‘ μμν©λλ€._
12μ μ νμ λͺ¨λ μκ°μ νμΈνκΈ° μμν μκ°μ μ¬μ©νμ¬ λ μ§λ₯Ό λ¨μν 무μν μ μκΈ° λλ¬Έμ λ€μκ³Ό κ°μ΄ λλ©λλ€.
if ( (startTime.hour() >=12 && endTime.hour() <=12 ) || endTime.isBefore(startTime) )
{
endTime.add(1, "days"); // handle spanning days endTime
if (currentTime.hour() <=12 )
{
currentTime.add(1, "days"); // handle spanning days currentTime
}
}
μ¬κΈ°μ μλ λ°μ΄μ¬λ¦°μ λ΄ μ¬μ© μ¬λ‘ μλ리μ€λ₯Ό νμν©λλ€. μ μ©νκΈ°λ₯Ό λ°λλλ€.
https://jsfiddle.net/rfossella/66wjtnvk/1/
μκ° λ΄μ£Όμ μ λ€μ νλ² κ°μ¬λ립λλ€. (λ§μ₯λμ΄ μλλλ€ :-))
λλ λ€μκ³Ό κ°μ κΈ°λ₯:
@Machibus λ΅λ³ ν μ λ°μ΄νΈλ¨
function getTime(dateTime: Moment): Moment {
return moment({h: dateTime.hours(), m: dateTime.minutes()});
}
/** USAGE EXAMPLE */
const first: Moment = getTime( moment([2018, 5, 1, 17, 0, 0]) ); // 17:00
const second: Moment = getTime( moment([2013, 8, 2, 18, 0, 0]) ); // 18:00
const third: Moment = getTime( moment([2015, 3, 3, 19, 0, 0]) ); // 19:00
second.isAfter(first, 'minutes'); // true
first.isBefore(second, 'minutes'); // true
first.isAfter(second, 'minutes'); // false
second.isBefore(first, 'minutes'); // false
second.isBetween(first, third, 'minutes', '[]'); // true
third.isBetween(first, second, 'minutes', '[]'); // false
// second.diff(first, 'minutes') => 60
// second.diff(third, 'minutes') => -60
// third.diff(first, 'minutes') => 120
λ°λΌμ λ μ§κ° μλ μκ°λ§ μ¬μ©νλ MomentJS λ©μλ isBetween, isAfter, isBefore
μΌ μ μμ΅λλ€.
λ Έλ ₯νλ€
second.isBetween(third, first, 'minutes', '[]'); // true
Momentμ λ²κ·Έκ° μλλΌ μ²« λ²μ§Έ 맀κ°λ³μκ° μ΄μ λ μ§μ¬μΌ νλ€λ λ¬Έμμ λλ½λ μ 보μ λλ€.
μ΄κ²λ κ½€ μ΄λ¦¬λ₯μ ν©λλ€. λλ μΈμ νκ³ μΆμ κ²λ³΄λ€ λ λ§μ λμ μΌμ΅λλ€! @Machibus λλ @rfossella μ΄λ€ ꡬνμ΄ μλνκ² λμμ΅λκΉ?
λλ κ°μ λ¬Έμ λ‘ λ§νκ³€ νκ³ λ§μΉ¨λ΄ κ·Έκ²μ μλμν€λ λ°©λ²μ μ°Ύμμ΅λλ€ π κ΅°λ μκ° νμν, λμμ΄λκΈ°λ₯Ό λ°λλλ€ ...
const isTimeBetween = function(startTime, endTime, serverTime) {
let start = moment(startTime, "H:mm")
let end = moment(endTime, "H:mm")
let server = moment(serverTime, "H:mm")
if (end < start) {
return server >= start && server<= moment('23:59:59', "h:mm:ss") || server>= moment('0:00:00', "h:mm:ss") && server < end;
}
return server>= start && server< end
}
κ·Έλ° λ€μ μ΄ κΈ°λ₯μ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
isTimeBetween('22:30', '3:00', '23:50') //return true
isTimeBetween('22:30', '3:00', '1:50') //return true
isTimeBetween('22:30', '3:00', '4:50') //return false
@kdavong μμ£Ό μ μλν©λλ€, κ°μ¬ν©λλ€!
μλ
,
λͺ λ
μ μ κ²μν λ°μ΄μ¬λ¦°μ λ€μ νμΈνλλ° μ¬μ ν νμ± μνμ΄λ©° μ¬μ ν μλν©λλ€. μ°Έκ³ : μ μμμλ νμν κ²½μ°μ λλΉνμ¬ κ΅°μ¬ μκ°μ μκ°νμ§ μμ΅λλ€.
μ¬κΈ°μ μλ λ°μ΄μ¬λ¦°μ λ΄ μ¬μ© μ¬λ‘ μλ리μ€λ₯Ό νμν©λλ€. μ μ©νκΈ°λ₯Ό λ°λλλ€.
https://jsfiddle.net/rfossella/66wjtnvk/1/
λ‘
κ°μ₯ μ μ©ν λκΈ
λ€λ₯Έ MomentJS μ§λ¬Έμ μ΄ν΄λ³Έ νμλ λ¨μν λ κ°μ λ€λ₯Έ μκ° μ λΉκ΅νκΈ° μν΄ momentλ₯Ό μ¬μ©νλ λ°©λ²μ λν΄ μ¬μ ν μ΄λ¦¬λ₯μ ν©λλ€.
μμΌ/λ μ§λ₯Ό 무μν΄μΌ ν©λλ€.
μ¬μ© μ¬λ‘:
κ΅¬μ± νμΌμμ μμ λ° μ’ λ£ μκ°μ΄ ν¬ν¨λ μΌμ μ μ½κ³ μμ΅λλ€. μ΄κ²μ Node.jsλ₯Ό μ¬μ©νμ¬ μνλ©λλ€.
λ΄ μλ리μ€λ κΈ°μ μ μΌλ‘ μ΄νμ κ±Έμ³ μμΌλ©° κ·Έκ²μ΄ κ±°μ§μΈ μ΄μ λ₯Ό μ΄ν΄ν©λλ€.
TRUEλ₯Ό λ°ννλ μκ°μ΄ νμν©λλ€. μ¦, currentTimeμ startTime λ° endTimeμ΄λ©° ν΄λΉ λ²μμ μν©λλ€.
λλ endTime μκ°μ΄ > 12μΈμ§ νμΈνμ¬ λ¬Έμ λ₯Ό ν΄κ²°νλ€κ³ μκ°νκ³ ν루λ₯Ό μΆκ°νμ¬ λ€μ λ μ΄λΌλ μκ°μ μ΄ν΄νλλ‘ ν©λλ€. μ
κ·Έλ¬λ currentTimeμ΄ μμ μ΄νμ΄κΈ°λ νλ©΄ μ€λ¨λ©λλ€. μλ₯Ό λ€μ΄
01:30amμ 06:30pmκ³Ό 03:30am μ¬μ΄μ κ³ λ €λμ§ μμ΅λλ€. λν μμΌμ΄ λ€λ₯΄κΈ° λλ¬Έμ λλ€.
μ΄ μμ μ μννκ³ λ¨μν λ μ§/λ μ§λ₯Ό 무μνκΈ° μν λ€λ₯Έ μ μ μ¬νμ΄ μμ΅λκΉ?
μ΄κ²μ΄ μ΄λ κ² λ³΅μ‘νλ€λ κ²μ΄ λ―ΏκΈ°μ§ μμ§λ§ μλ§λ λ€μκ³Ό κ°μ κ²μ λλ€.
λ€μμ λ λͺ μμ μΌλ‘ μλνλ κ²½μ°μλ μ¬λ¬ λ μ κ±Έμ³ λ¬Έμ κ° λ°μνλ€λ μΆκ° μ€λͺ μ λλ€.
_day/date_κ° μκ°μ μΌλ‘ κ³ λ €λκΈ° λλ¬Έμ κ·Έλ€μ΄ κ±°μ§μ΄ λ κ²μ΄λΌλ κ²μ΄ λΆλͺ ν κ² κ°μ΅λλ€. μ΄κ²μ λ΄κ° μ£Όμμνλ €κ³ νλ κ²μ λλ€.
λ€μμ΄ μλν©λλ€.
κ·Έλ¬λ μ΄κ²μ START TIMEμ΄ μ€μ 12μ μ΄μ μΈμ§ && ENDTIMEμ΄ μ€μ 12μ μ΄νμΈμ§ νμΈν λ€μ ENDTIMEμ 1μΌμ μΆκ°ν΄μΌ ν¨μ μλ―Έν©λλ€.