μ€ν μ¬κΈ°λ€:
moment("2016-10-16").endOf('day').format("YYYY-MM-DD HH:mm:ss")
λλΆλΆμ μκ°λμμ "2016-10-16 23:59:59"
λ°νν©λλ€. κ·Έλ¬λ λΈλΌμ§μμλ "2016-10-17 00:59:59"
λ°νν©λλ€. 2016-10-16μ 00:00λΆν° 00:59κΉμ§μ μκ°λ§ λλ½λμκΈ° λλ¬Έμ μ΄κ²μ μ¬λ°λ₯΄μ§ μμ΅λλ€. 2016-10-16μ λμ μ¬μ ν ββκ°μ λ μ§ 23:59:59μ
λλ€.
μ΄κ²μ moment-timezoneμΌλ‘λ μ¬νν μ μμ΅λλ€.
moment.tz("2016-10-16","America/Sao_Paulo").endOf('day').format("YYYY-MM-DD HH:mm:ss")
λ¬Έμ λ endOf
λ©μλμ μμ΅λλ€. ν루μ λμ κ³μ°νκΈ° μν΄ μ°λ¦¬λ κ·Έλ μ _start_μ ν루λ₯Ό λν λ€μ 1λ°λ¦¬μ΄λ₯Ό λΊλλ€. κ·Έ λ
Όλ¦¬λ νλ£¨κ° μμ μ μμνμ§ μμ λ κ²°ν¨μ΄ μμ΅λλ€. ν루λ₯Ό μΆκ°νλ λμ νΉμ λ μ§μ μ νν κΈ°κ° κΈΈμ΄λ₯Ό μΆκ°ν΄μΌ ν©λλ€.
μ΄κ²μ μλ μκ°/μκ°-μκ°λ#327λ‘ λ³΄κ³ λμμ΅λλ€.
ν루μ μ νν μκ°μ κ³μ°νλ κ²κ³Όλ λ°λλ‘ λ€μκ³Ό κ°μ΄ ν μλ μμ΅λλ€.
moment('2016-10-16').startOf('day').add(1, 'day').startOf('day').subtract(1, 'millisecond').format()
"2016-10-16T23:59:59-02:00"
16μΌμλ νΈμν λ 15μΌμλ μ μλν©λλ€.
moment('2016-10-15').startOf('day').add(1, 'day').startOf('day').subtract(1, 'millisecond').format()
"2016-10-15T23:59:59-03:00"
λ΄κ° μκ°νμ§ λͺ»ν μ£μ§ μΌμ΄μ€κ° μμ΅λκΉ?
λ€λ₯΄κ² νλ©΄ μ±λ₯μμ μ΄μ μ΄ μμ μ μλ€κ³ μκ°νμ§λ§, μ½μ μ μμ΅λλ€!
ν , μ¬κΈ°μ λ λ€λ₯Έ λ¬Έμ κ° μμ΅λλ€.
moment.tz("2016-10-16","America/Sao_Paulo").startOf('day').add(1,'day').startOf('day').subtract(1,'ms').format()
// "2016-10-16T23:59:59-02:00" (ok)
moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').add(1,'day').startOf('day').subtract(1,'ms').format()
// "2016-10-14T23:59:59-03:00" (wrong date)
moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').add(1,'day').format()
// "2016-10-15T23:00:00-03:00" should have skipped forward to "2016-10-16T01:00:00-02:00"
μ¬κΈ°μμ μ 체 λͺ¨νΈν λΈλΌμ°μ λμμ μ²λ¦¬νκ³ μμ΅λκΉ? μλλ©΄ λκ° λ μλμ?
Brasilliaμ Windows μκ°λκ° μλ ν¬λ‘¬:
moment("2016-10-15").startOf('day').format()
"2016-10-15T00:00:00-03:00"
moment("2016-10-15").startOf('day').add(1, 'day').format()
"2016-10-16T01:00:00-02:00"
Moment Timezoneμ μ¬μ©νλ λ΄ μκ°λμ ν¬λ‘¬:
moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').format()
"2016-10-15T00:00:00-03:00"
moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').add(1, 'day').format()
"2016-10-15T23:00:00-03:00"
λ©μλ!
μκ° μκ°λμ λ¬Έμ κ° μμ΅λκΉ? μ κ° κ·Έ μ½λλ₯Ό μ λͺ°λΌμ λ§μλ리기 μ΄λ ΅μ΅λλ€. 첫 λ²μ§Έκ° μλνλ©΄ λΈλΌμ°μ μ²λΌ 보μ΄μ§ μμ΅λλ€.
λλ μ΄κ²μ΄ ν΄λΉ λ μ§μ 'μΆκ°'λ κ²½μ° μκ° μκ°λκ° νμ μλͺ»λ λ μ§λ₯Ό λ€μ νΈμνλ€λ μ¬μ€μ κ²°κ³ΌλΌκ³ μκ°ν©λλ€. μλν κ²μΈμ§ μ°μ°ν κ²μΈμ§ νμ€νμ§ μμ΅λλ€.
//setting moves forward
moment.tz("2016-10-16T00:00:00","America/Sao_Paulo").format()
"2016-10-16T01:00:00-02:00"
//adding moves backward
moment.tz("2016-10-15T00:00:00","America/Sao_Paulo").add(1, 'day').format()
"2016-10-15T23:00:00-03:00"
//setting moves forward
moment.tz("2016-03-13T02:00:00","America/Chicago").format()
"2016-03-13T03:00:00-05:00"
//adding moves backward
moment.tz("2016-03-12T02:00:00","America/Chicago").add(1, 'day').format()
"2016-03-13T01:00:00-06:00"
//one more time for funzies
moment.tz("2016-03-27T01:00:00","Europe/London").format()
"2016-03-27T02:00:00+01:00"
moment.tz("2016-03-26T01:00:00","Europe/London").add(1, 'day').format()
"2016-03-27T00:00:00Z"
λλ μ΄κ²μ΄ μκ°μ μ§ν¬ μ μμ λ keepTime μ€μ μ μ¬μ©νλ €κ³ μλνλ κ²κ³Ό κ΄λ ¨μ΄ μλ€κ³ μκ°ν©λλ€. λλ μ΄ μ½λκ° μ κ·Έλ° κ²μΈμ§ λ§ν λ§νΌ μ΄ μ½λλ₯Ό μ μμ§ λͺ»νμ§λ§, μ΄ μ½λμ keepTime νΈμΆμ΄ 1μ΄ μλ 0μ΄λΌλ©΄ λͺ¨λ κ²μ΄ μμλλ‘ μ§νλ κ²μ΄λΌλ κ²μ νμ€ν μκ³ μμ΅λλ€. λ€λ‘ 미루λ κ²μ μκ°μ μ μ§νκΈ° λλ¬Έμ λλ€. κ·Έλ¦¬κ³ μκ°μ μ μ§ν΄μΌ ν©λλ€. μ΄ μ£μ§ μΌμ΄μ€μμλ νν€ν©λλ€.
moment.updateOffset = function (mom, keepTime) {
var zone = moment.defaultZone,
offset;
if (mom._z === undefined) {
if (zone && needsOffset(mom) && !mom._isUTC) {
mom._d = moment.utc(mom._a)._d;
mom.utc().add(zone.parse(mom), 'minutes');
}
mom._z = zone;
}
if (mom._z) {
offset = mom._z.offset(mom);
if (Math.abs(offset) < 16) {
offset = offset / 60;
}
if (mom.utcOffset !== undefined) {
mom.utcOffset(-offset, keepTime);
} else {
mom.zone(offset, keepTime);
}
}
};
λλ μ¬κΈ°μμ λμμ΄ λ μκ° μκ°λμ λν΄ μΆ©λΆν μμ§ λͺ»νμ§λ§ μλ§λ keepTime
κ° μ¬μ©λλ μ΄μ μ λν ν°μΌμ μ‘°μ¬νλ λͺ¨λ μ¬λμκ² λμμ΄ λ κ²μ
λλ€: https://github.com/moment/moment-timezone/ λ¬Έμ /28
https://github.com/moment/moment/pull/1564
μ΄κ²μ μκ°μ μ²λ¦¬ μμμ λ§μ§λ§ ν° λ³κ²½μ λλ€. μ΄ λ¬Έμ μ κ΄λ ¨μ΄ μλμ§ νμ€νμ§ μμ§λ§ λμμ΄ λ κ²μ λλ€.
@maggiepint μ€λͺ μ’ μλμ?
νμ μλͺ»λ λ μ§λ₯Ό λ€λ‘ νΈμν©λλ€.
λΆν. λ΄ λ§μ -- μ°λ¦¬λ μκ° μκ°λ λ¬Έμ λ₯Ό λ ΈμΆνλ μκ° μμ΅λκΉ, μλλ©΄ ν루μ μμ/λμ DSTλ₯Ό κ°μ§νκ³ μ μ νκ² μ²λ¦¬νκΈ° μν΄ μκ°μ μ€λ§νΈ μ½λκ° νμν©λλ€. λ λ²μ§Έλ μ€κ°μμ μ¬μμ λλ€. moment-tzμ moment μ¬μ΄λ₯Ό μ§λλ μμμ λ€μ 리ν©ν λ§ν΄μΌ νλ€λ©΄ μ§μ₯μ λλ€. μ°¨λΌλ¦¬ 3.0μ κΈ°λ€λ¦¬κ³ μ μΈν°νμ΄μ€μ μ΄ λ¬Έμ κ° μκΈ°λ₯Ό λ°λλλ€.
@ichernev μ½λκ° μ€λλ μ λ°©μλλ‘λΌλ©΄ μ΄ ν κ°μ§ λ¬Έμ μ λ κ°μ§ λ¬Έμ κ° μμ΅λλ€. νλλ @mj1856μ΄ μλ μ κΈ°ν λ¬Έμ μ λλ€. μμ μ μμνμ§ μλ λ μ νν€ν ν루 κ°μΌλ‘ λλ©λλ€. μ΄κ²μ μκ°μ λ¬Έμ μ λλ€.
λ€λ₯Έ νλλ μ ν¨νμ§ μμ λ μ§κ° νμλ λ ν΄λΉ μ ν¨νμ§ μμ λ μ§κ° μμ±μμμ μ¬μ©λλ©΄ κ·Έ μκ° μκ°λκ° μμΌλ‘ μ΄λνμ§λ§ ν΄λΉ λ μ§μ 'μΆκ°'λλ©΄ λ€λ‘ μ΄λνλ€λ κ²μ λλ€. μ΄κ²μ νμ¬ μμ μ΄ μλ μκ° μκ°λμ λ¬Έμ μ λλ€. μκ°λ μΈν°νμ΄μ€κ° μ΄λ»κ² λ³κ²½λλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. μ‘°κΈ μκ°ν΄λ΄μΌ ν κ² κ°μ΅λλ€.
@maggiepint λͺ μΎν μ€λͺ κ°μ¬ν©λλ€.
λ°λΌμ μκ° λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ endOf('day')
κ° μ ννμ§ μμ΅λλ€. νλ£¨κ° λλ λκΉμ§ "μ‘°μ€"νλ©΄ λ©λλ€. 00:00μ΄λ©΄ μλ£νκ³ , κ·Έλ μ§ μμΌλ©΄ λ λ²μ§Έ μ‘°μ€μ΄ 00μ λλ¬νλ©΄ λ€μ μ‘°μ€ν©λλ€. 00 κ·Έλ μ§ μμΌλ©΄ 첫 λ²μ§Έ μ·μ μ¬μ©ν©λλ€. λ λ²μ§Έ λͺ©νλ DSTλ₯Ό 건λλ°κ³ ν μκ° μ λ "μ곑"λλ©΄ λμμ΄ λ©λλ€. DST λλ¬Έμ ν루μ λμ΄ μλͺ»λ μκ°μΈ κ²½μ° λ λ²μ§Έ λͺ©νλ μμλμ§ μμ΅λλ€.
μ°λ¦¬λ μ΄ μκ³ λ¦¬μ¦μ λͺ¨λ endOf
, μλ§λ startOf
μ μ¬μ©ν΄μΌ νμ§λ§, νμ¬ μ°λ¦¬κ° νλ 0μΌλ‘ μ€μ νλ©΄ μΆλ‘ νκΈ°κ° λ μ΄λ ΅μ΅λλ€.
μλ νμΈμ μ¬λ¬λΆ, μ λ νμ¬ λ²μ μ moment(2.14.1)μμ μ΄ λ¬Έμ μ μν₯μ λ°κ³ μμ΅λλ€.
μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ #3716μ μ μΆνμ§λ§ νμ¬ νΈλμ€νμΌ μ΄μ λ‘ Travis CIμ λ¬Έμ κ° μμ΅λλ€. λ 빨리 μ‘°μ¬ν μμ μ λλ€.
μ΄κ²λ κ΄λ ¨μ΄ μμ΅λλ€(κΈ°λ³Έ λΈλΌμ§ λ‘μΌμΌ).
κ°μ λ μ§μ μμ κ²°κ³Ό:
μκ°("2017-10-16T00:59:59.999").subtract(1,'μΌ').endOf('μΌ')
=> "2017-10-16T00:59:59.999"
μ΄λ΄ - λλ startOfμ endOfμ λν΄ μ΄κ²μ μμ νλ #4164λ₯Ό λ°©κΈ μ μΆνμ΅λλ€. μ°λ¦¬κ° λ§μΉ¨λ΄ μ΄κ²μ μμΌλ‘ λμκ° μ μλλ‘ νΌλλ°±μ λ°κ³ μΆμ΅λλ€.
@mj1856 , DST edgeμ endOf λ¬Έμ κ° ν΄κ²°λ κ² κ°μμ PRμ λ«μμ΅λλ€. μ΄κ²λ κ³ μΉ μ μμκΉμ?
#4164λ₯Ό ν μ€νΈνλλ° μμ λ κ² κ°μ΅λλ€. λ³ν©μ κΈ°λ€λ¦¬κ³ μμ΅λλ€.