moment().add(1, "months") // >> Mon Jul 20 2015 13:36:12 GMT+0200
moment().add(1.9, "months") // >> Mon Jul 20 2015 13:36:12 GMT+0200
// Excpected: Mon Aug 17 2015 09:34:37 GMT+0200
์ง๊ธ์ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
var duration = moment.duration(1.9, "months");
var ms = duration.asMilliseconds();
var date = moment().add(ms, "ms");
์ด๋ฌํ ๋ฉ์๋๊ฐ ๋ถ๋ ์์์ ๊ฐ์ ๋ํ๊ฑฐ๋ ๋บ ์ ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ด๊ฒ์ ์๋์ ์ผ๋ก ์ค๊ณ๋ ๊ฒ์ด์ง๋ง ์ค๋ช ์์์ ๋ ์ ์ค๋ช ํ ์ ์์ต๋๋ค.
์๊ฐ, ๋ถ, ์ด ๋๋ ๋ฐ๋ฆฌ์ด๋ฅผ ๋ํ๊ฑฐ๋ ๋บ ๋ ์์๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ผ ๋๋ ๋ ํฐ ๊ตฌ์ฑ ์์๋ฅผ ์ธ๋ถํํ ์๋ ์์ต๋๋ค.
๊ทธ ์ด์ ๋ ์๊ฐ ์ํ๊ณผ ๋ ์ง ์ํ ์ฌ์ด์ ๋ ผ๋ฆฌ์ ์ธ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๊ฐ ์ํ์ UTC ๊ธฐ๋ฐ ํ์์คํฌํ๋ฅผ ์ฆ๊ฐ ๋๋ ๊ฐ์์ํค๋ ์ ํ ์๊ฐ ์ฒ๋๋ฅผ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ์ค์๊ฐ์ผ๋ก DST ์ ํ์ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฏธ๊ตญ์ ๋๋ถ๋ถ์ ์ฅ์์์ 2015-03-08T01:00:00
๋ํ๊ธฐ 1์๊ฐ์ DST ์ ํ์ ์ํด 2:00์์ 3:00๊น์ง์ ์๊ฐ์ ๊ฑด๋๋ฐ์๊ธฐ ๋๋ฌธ์ 2015-03-08T03:00:00
๊ฐ ๋ฉ๋๋ค.
๋ ์ง ์ํ์ ์ ํ ์๊ฐ ์ฒ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฌ๋ ฅ์ ๋ ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ ์๋ฅผ ์ฌ์ฉํ๋ฉด 2015-03-08T01:00:00
๋ํ๊ธฐ _day_ ๋ 2015-03-09T01:00:00
๊ฐ ๋ฉ๋๋ค. ๋น๋ก 23์๊ฐ์ด ์ง๋ฌ์ง๋ง ๋ง์
๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก "ํ๋ฃจ"๋ ์ด ๋ฌธ๋งฅ์ด ๊ณ ์ ๋ ์๊ฐ์ด ์๋๋ฉฐ, ๋ฐ๋ผ์ ๊ทธ๊ฒ์ ์ธ๋ถํํ๋ ๊ฒ์ ๋ฌด์๋ฏธํ ๊ฒ์
๋๋ค. (์ด๋ ๋ฐ๋์ ์ 12์๊ฐ ํ๊ฐ ๋ ๊น์, ์๋๋ฉด 11.5์๊ฐ ํ๊ฐ ๋ ๊น์?)
DST๊ฐ ์๋๋ผ๋ ๋ชจ๋ ์์ด 30์ผ์ด ์๋๋ฉฐ ๋ชจ๋ ์ฐ๋๊ฐ 365์ผ์ธ ๊ฒ์ ์๋๋๋ค. 1๋ ์ ๋ํ๋ค๋ ๊ฒ์ 365์ผ์ ๋ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌ๋ ฅ์์ ์์น๋ฅผ โโ๋ค์ ํด์ ๊ฐ์ ๋ฌ๊ณผ ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ก ์ธํด ์ค๋ ์ 2์ 29์ผ์ 1๋ ์ ์ถ๊ฐํ๊ณ ๋น์ค๋ ์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ์ ๊ฐ์ ํน์ ๋ชจํธ์ฑ์ด ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ 2์ 28์ผ์ ์ฐฉ๋ฅํ๊ธฐ๋ก ์ ํํ์ง๋ง 3์ 1์ผ์ ์ฐฉ๋ฅํ๋ ๊ฒ๋ ๋๊ฐ์ด ์ ํจํฉ๋๋ค.
๋ค๋ฅธ ์๋ก, 8์ 31์ผ ๋ํ๊ธฐ 1๊ฐ์์์ 1๊ฐ์์ ๋นผ๋ฉด 8์ 30์ผ์ด ๋ฉ๋๋ค.
๋ ์ง ์ํ์ ์ํ์ ์ผ๋ฐ์ ์ธ ๋ง์ ๊ณผ ๋บ์ ๊ท์น์ ๋ฐ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋์ ์ด๋ ๊ณฑ์ ์ฐ์ฐ๋ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก 1.9๊ฐ์์ ๋ํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๊ฐํ๋ฉด 6์ 15์ผ ์์ + 1.5๊ฐ์์ ๊ฒฐ๊ณผ๋ฅผ ์์ํ ์ ์์ต๋๊น? ๋ค์ ์ค ํ๋๋ ์ฌ๋์ด ์ํํ ์ ์์ต๋๋ค.
2015-06-15T00:00
+ (0.5 * 6์ 30์ผ) = 2015-06-30T00:00
+ (1๊ฐ์ = 30์ผ) = 2015-07-30T00:00
2015-06-15T00:00
+ (0.5 * 6์ 30์ผ) = 2015-06-30T00:00
+ (1๊ฐ์ = 31์ผ) = 2015-07-31T00:00
2015-06-15T00:00
+ 1๊ฐ์ = 2015-07-15T00:00
+ (0.5 * 7์์ 31์ผ) = 2015-07-30T12:00
2015-06-15T00:00
+ [(6์๊ณผ 7์์ 61์ผ / 2 = ์ด ๋ฌ์ ํ๊ท 30.5์ผ) * 1.5๊ฐ์ = 45.75์ผ] = 2015-07-30T18:00
์ฌ๊ธฐ ๋ชจ๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฒฐ๊ณผ์ธ 4๊ฐ์ง ๋ค๋ฅธ ๋ต๋ณ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ๋ ์ง ๊ณ์ฐ์ ์ํํ ๋ ๋จ์๋ฅผ ์ธ๋ถํํ ์ ์๋ ์ด์ ์ ๋๋ค.
์๊ฐ์ ๋ด์ด ์ด ๋งค์ฐ ์์ธํ ๋ต๋ณ์ ์์ฑํด ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์๋ ์ด๋ฉด์ ์๋ ๋ ผ๋ฆฌ๋ฅผ ๋ ์ ์ดํดํฉ๋๋ค.
๋๋ Matt์๊ฒ ๊ฐ์ฌํ๋ ๋ด ์์ ์ ์ ํญํ ์ ์์์ต๋๋ค. Delgan์ด ๊ฒฝํํ ๊ฒ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์์ต๋๋ค. ๊ทํ์ ๋ต๋ณ์ด ๋๋ฌด ์๋ฒฝํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ์๋์ ์ผ๋ก ์ค๊ณ๋ ๊ฒ์ด์ง๋ง ์ค๋ช ์์์ ๋ ์ ์ค๋ช ํ ์ ์์ต๋๋ค.
์๊ฐ, ๋ถ, ์ด ๋๋ ๋ฐ๋ฆฌ์ด๋ฅผ ๋ํ๊ฑฐ๋ ๋บ ๋ ์์๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง ์ผ ๋๋ ๋ ํฐ ๊ตฌ์ฑ ์์๋ฅผ ์ธ๋ถํํ ์๋ ์์ต๋๋ค.
๊ทธ ์ด์ ๋ ์๊ฐ ์ํ๊ณผ ๋ ์ง ์ํ ์ฌ์ด์ ๋ ผ๋ฆฌ์ ์ธ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๊ฐ ์ํ์ UTC ๊ธฐ๋ฐ ํ์์คํฌํ๋ฅผ ์ฆ๊ฐ ๋๋ ๊ฐ์์ํค๋ ์ ํ ์๊ฐ ์ฒ๋๋ฅผ ๊ฐ์ ํฉ๋๋ค. ์ด๊ฒ์ ์ค์๊ฐ์ผ๋ก DST ์ ํ์ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฏธ๊ตญ์ ๋๋ถ๋ถ์ ์ฅ์์์
2015-03-08T01:00:00
๋ํ๊ธฐ 1์๊ฐ์ DST ์ ํ์ ์ํด 2:00์์ 3:00๊น์ง์ ์๊ฐ์ ๊ฑด๋๋ฐ์๊ธฐ ๋๋ฌธ์2015-03-08T03:00:00
๊ฐ ๋ฉ๋๋ค.๋ ์ง ์ํ์ ์ ํ ์๊ฐ ์ฒ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฌ๋ ฅ์ ๋ ์ง๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ ์๋ฅผ ์ฌ์ฉํ๋ฉด
2015-03-08T01:00:00
๋ํ๊ธฐ _day_ ๋2015-03-09T01:00:00
๊ฐ ๋ฉ๋๋ค. ๋น๋ก 23์๊ฐ์ด ์ง๋ฌ์ง๋ง ๋ง์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก "ํ๋ฃจ"๋ ์ด ๋ฌธ๋งฅ์ด ๊ณ ์ ๋ ์๊ฐ์ด ์๋๋ฉฐ, ๋ฐ๋ผ์ ๊ทธ๊ฒ์ ์ธ๋ถํํ๋ ๊ฒ์ ๋ฌด์๋ฏธํ ๊ฒ์ ๋๋ค. (์ด๋ ๋ฐ๋์ ์ 12์๊ฐ ํ๊ฐ ๋ ๊น์, ์๋๋ฉด 11.5์๊ฐ ํ๊ฐ ๋ ๊น์?)DST๊ฐ ์๋๋ผ๋ ๋ชจ๋ ์์ด 30์ผ์ด ์๋๋ฉฐ ๋ชจ๋ ์ฐ๋๊ฐ 365์ผ์ธ ๊ฒ์ ์๋๋๋ค. 1๋ ์ ๋ํ๋ค๋ ๊ฒ์ 365์ผ์ ๋ํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌ๋ ฅ์์ ์์น๋ฅผ โโ๋ค์ ํด์ ๊ฐ์ ๋ฌ๊ณผ ์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ก ์ธํด ์ค๋ ์ 2์ 29์ผ์ 1๋ ์ ์ถ๊ฐํ๊ณ ๋น์ค๋ ์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ์ ๊ฐ์ ํน์ ๋ชจํธ์ฑ์ด ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ 2์ 28์ผ์ ์ฐฉ๋ฅํ๊ธฐ๋ก ์ ํํ์ง๋ง 3์ 1์ผ์ ์ฐฉ๋ฅํ๋ ๊ฒ๋ ๋๊ฐ์ด ์ ํจํฉ๋๋ค.
๋ค๋ฅธ ์๋ก, 8์ 31์ผ ๋ํ๊ธฐ 1๊ฐ์์์ 1๊ฐ์์ ๋นผ๋ฉด 8์ 30์ผ์ด ๋ฉ๋๋ค.
๋ ์ง ์ํ์ ์ํ์ ์ผ๋ฐ์ ์ธ ๋ง์ ๊ณผ ๋บ์ ๊ท์น์ ๋ฐ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋์ ์ด๋ ๊ณฑ์ ์ฐ์ฐ๋ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก 1.9๊ฐ์์ ๋ํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๊ฐํ๋ฉด 6์ 15์ผ ์์ + 1.5๊ฐ์์ ๊ฒฐ๊ณผ๋ฅผ ์์ํ ์ ์์ต๋๊น? ๋ค์ ์ค ํ๋๋ ์ฌ๋์ด ์ํํ ์ ์์ต๋๋ค.
2015-06-15T00:00
+ (0.5 * 6์ 30์ผ) =2015-06-30T00:00
+ (1๊ฐ์ = 30์ผ) =2015-07-30T00:00
2015-06-15T00:00
+ (0.5 * 6์ 30์ผ) =2015-06-30T00:00
+ (1๊ฐ์ = 31์ผ) =2015-07-31T00:00
2015-06-15T00:00
+ 1๊ฐ์ =2015-07-15T00:00
+ (0.5 * 7์์ 31์ผ) =2015-07-30T12:00
2015-06-15T00:00
+ [(6์๊ณผ 7์์ 61์ผ / 2 = ์ด ๋ฌ์ ํ๊ท 30.5์ผ) * 1.5๊ฐ์ = 45.75์ผ] =2015-07-30T18:00
์ฌ๊ธฐ ๋ชจ๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฒฐ๊ณผ์ธ 4๊ฐ์ง ๋ค๋ฅธ ๋ต๋ณ์ด ์์ต๋๋ค. ์ด๊ฒ์ด ๋ ์ง ๊ณ์ฐ์ ์ํํ ๋ ๋จ์๋ฅผ ์ธ๋ถํํ ์ ์๋ ์ด์ ์ ๋๋ค.