๋ชจ๋ฐ์ผ์์ ์๊ฐ์ ๊ฐ์ ธ์ค๊ฒ๋ ๋ DateTime.now() ๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
ํ์ง๋ง ์ด๋ ๋ชจ๋ฐ์ผ ๋ด๋ถ, ์ฆ ๋ก์ปฌ ์๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ์ ์ค์ ์๊ฐ๊ณผ ์ ํ ๋ค๋ฅธ ์๊ฐ์ด๋ค.
๋ฐ๋ผ์ ๋คํธ์ํฌ ์๊ฐ์ ๊ฐ์ ธ์์ฃผ๋ NTP(Network Time Protocol) ํ๋ฌ๊ทธ์ธ์ ์ด์ฉํด์ ์ค์ UTC๊ธฐ์ค ํ๊ตญ ์๊ฐ์ ์์๋ณด๋๋ก ํ์.
ntp | Dart Package
Fetch accurate time or current DateTime object from (NTP) Network Time Protocol server.
pub.dev
์ฐธ๊ณ ์์ค๋ ์ด์ชฝ์์ ํ์๋ค
dependencies:
ntp: ^1.0.8
๋ฅผ pubgetํด์ฃผ์
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ค๋งํธํฐ์์ ์ค์ ๋ ํ์์กด(TimeZone)์ ๋ฐ๋ผ์ ๋คํธ์ํฌ์๊ฐ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ด๋ค
DateTime currentTime = await NTP.now();
//๋คํธ์ํฌ์ ์๊ฐ (์ค๋งํธํฐ์ ์์น์ ๋ฐ๋ผ ์๊ฐ๋๊ฐ ๋ฐ๋)
๋คํธ์ํฌ๋ฅผ ์ ์ํด์ ๊ฐ์ ๊ฐ์ ธ์ค๋ ๋น ๋๊ธฐ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ async await์ ์ฌ์ฉํด์ผํ๋ค.
์๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ์ค์ ๋ก ๋คํธ์ํฌ ์๊ฐ์ ๊ฐ์ ธ์ค๊ธด ํ๋๋ฐ ์ด๋ ์ค๋งํธํฐ์์ ์ค์ ๋ ํ์์กด(TimeZone)์ ๋ฐ๋ผ
๋ณํ๋๋ ์๊ฐ๋๋ ๋ฌ๋ผ์ง๋ค.
๋ง์ฝ ์ฑ์์๋ ํ๊ตญ์๊ฐ๋ง ์ป๊ฒ๋ ์ค๊ณ๋ฅผ ํ๊ณ ์ถ์๋ฐ ์ฌ์ฉ์๊ฐ ์์๋ก United State ์๊ฐ๋๋ก ๋ฐ๊พผ๋ค๋ฉด ๊ฒฐ๊ณผ๋ ๋ฏธ๊ตญ ์๊ฐ๋๋ก ๋ณํ๋๊ฒ ๋๋ค.
๋ง์ฝ ์ด๋ ์ง์ญ์ผ๋ก ์ค์ ์ด ๋๋ ํ์ค์๊ฐ๋ง์ ๊ฐ์ ธ์ค๊ณ ์ถ๋ค๋ฉด DateTime ํด๋์ค์ ๊ณ ์ ๊ธฐ๋ฅ์ธ toUtc()๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.
DateTime currentTime = await NTP.now();
currentTime = currentTime.toUtc();
//ํ์ฌ ์๊ฐ๋: GMT๋ก ์ค์ ๋จ
์ง๊ธ์ ํ๊ตญ์๊ฐ์ด์๋๋ผ ๊ตญ์ ํ์ค์๊ฐ๋๋ฅผ ๊ฐ๋ฅดํค๊ณ ์๋ค.
๋ฐ๋ผ์ ๊ตญ์ ํ์ค์๊ฐ์ +9์๊ฐ์ ๋ํ ๊ฐ์ด ํ๊ตญ์๊ฐ์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค
DateTime currentTime = await NTP.now();
currentTime = currentTime.toUtc().add(Duration(hours: 9));
//ํ์ฌ ์๊ฐ๋: Korea/Seoul๋ก ์ค์ ๋จ