์ธ๊ณ ๊ฐ์ง์ ์๋ ์ฐฝ๊ณ ๋ฅผ ๊ด๋ฆฌํ๋ ์์ฌ ์์คํ ํน์ฑ ์ TIME-ZONE๊ณผ ๊ด๋ จ๋ ์ด์๋ฅผ ๋ฌด์ํ ์๋ ์์๋ค. ํ์ฌ๋ ๊ตญ๋ด ์ฐฝ๊ณ ์์๋ง ์ฌ์ฉํ๊ณ ์์์ง๋ง ํด์ธ ์ฐฝ๊ณ ์ ์ ์ผ์ ์ ๋ด๋ ์ผ๋ก ๊ณํํ๊ณ ์๋ ๋งํผ TIME-ZONE ์ด์๋ ํ์ ํด๊ฒฐ๊ณผ์ ๋ผ๊ณ ์๊ฐํ๋ค.
๊ฐ๋ฐ ๋ฐฉ์ ๊ณ ๋ ค
TIME-ZONE์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง, ๋ด๋ถ ๊ฐ๋ฐ์ ํ์๋ฅผ ํตํด ๋์จ ๋ฐฉ์์ ๋ ๊ฐ์ง์๋ค. ํ๋๋ ์ธ๊ณ ๊ฐ์ง์ ์๊ฐ์ ๋ด์์ ๊ด๋ฆฌํ๋ ํ ์ด๋ธ์ ๋ง๋ค์ด ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋๋ผ์ ์ฝ๋์ ๋ง๊ฒ ์์ฐจ๋ฅผ ๊ฒ์ฐํด์ฃผ๋ ๋ฐฉ์์ด์๊ณ , ๋ค๋ฅธ ํ๋๋ ๋ฐ๋ก ์๊ฐ์ ๋ด์๋์ง ์๊ณ ์ฌ์ฉ์๊ฐ ๊ฐ์ธ์ ๋ณด์์ ๋๋ผ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ค์๊ฐ์ ์ธ APIํต์ ์ ํตํด ํด๋น ๋์์ ์๊ฐ์ ๋ฐ์์ค์๋ ๊ฒ์ด์๋ค.
์ ์์ ๋ฐฉ์ : TIME-ZONE์ ๋ถ๋ณ์ ๋ฐ์ดํฐ์ด๊ธฐ ๋๋ฌธ์ ์ต์ด ํ๋ฒ๋ง ๋ฐ์์ ํ ์ด๋ธ์ ๋ฑ๋กํด๋๋ฉด ๊ทธ ์ดํ๋ก ๊ตณ์ด ๋ฆฌ์์ค๋ฅผ ์ก์๋จน์ ์ผ์ด ์๋ค.
ํ์์ ๋ฐฉ์ : ๋ณ๋์ ํ ์ด๋ธ ์์ด ๊ด๋ฆฌํ ์ ์์ด ๊ด๋ฆฌ ํฌ์ธํธ๊ฐ ๋์ด๋์ง ์๊ณ , ๊ฐ๋ฐ ๋์ด๋ ์์ฒด๋ ๋ ๋ฎ๋ค.
๋ ๋ค ์ผ๋ฆฌ๊ฐ ์๊ณ ๊ฐ๋ฅ์ฑ ์๋ ์๊ฒฌ์ด์์ง๋ง, ๋ด ์๊ฐ์ ํ์๊ฐ ๋น์ฅ ํ ์คํธํ๊ธฐ์ ๋ ์ ํฉํ๋ค๊ณ ์๊ฐํ์ฌ ํ์์ ๋ฐฉ์์ ์ดํํ๊ณ , ๋จผ์ ํ ์คํธํด๋ณด๊ธฐ๋ก ํ๋ค. ๋น์ฅ ํ ์คํธ ํ๊ธฐ์๋ ์ ์๋ณด๋จ ํ์๊ฐ ๊ณต์๊ฐ ํจ์ฌ ๋ ๋ค์๊ธฐ ๋๋ฌธ๋ ์๋ค.
World Time API
๊ฐ๋จํ๊ฒ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ World Time API๋ผ๋ Open API๊ฐ ์์๊ณ , ํด๋น API์ฃผ์์ ๋ช ์๋์ด์๋ ๋๋ฅ/๋์ ๋ช ์ ๋ถ์ฌ์ ํธ์ถํ๋ฉด ํด๋น ์ง์ญ์ ํ์ฌ ๋ ์ง์ ์๊ฐ, ๊ทธ๋ผ๋์น ํ์ค์(GMT)์์ ์์ฐจ๋ฅผ json๊ฐ์ฒด๋ก returnํด์ค๋ค.
ํ๋ก ํธ ์ชฝ์์ ์ฝค๋ณด๋ฐ์ค ํ์์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋์/๋๋ฅ ์ ๋ณด๋ฅผ ์ ํํ๊ฒ ์ ๋ํ๊ณ , ๊ทธ ๊ฐ์ ํตํด Service์์ ๊ฐ๋ณ์ ์ผ๋ก API๋ฅผ ํธ์ถํ ์ ์๋๋ก ๊ตฌ์ํ๋ค.
function getUserCountryTime() {
// ์ฌ์ฉ์๊ฐ ์ ํํ comboboxData ์ถ์ถ
let cboIdx = $NC.getComboSelectedIndex("#cboUser_Country");
let cboData = $NC.getComboData("#cboUser_Country")[cboIdx];
// comboboxData์ ์ฝ๋ ๊ฐ๊ณผ ์ด๋ฆ์ ํฉ์ณ url์ ๋ถ์ผ country_code ์์ฑ
let userCountry = cboData.COMMON_NM + "/" + cboData.COMMON_CD;
// callback์ผ๋ก ์ ๋ฌ๋ฐ์ ๋ณ์ ์ ์ธ
let utcOffset = '';
// API ์ก์ ์ ์ํด Controller์ callGetUserCountryTime ๋ฉ์๋ ํธ์ถ
$NC.serviceCall("/CSC01010E0/callGetUserCountryTime.do", {
P_QUERY_PARAMS: $NC.getParams({
P_COUNTRY_INFO: userCountry
})
}, function(data) {
// JSONํ์์ผ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์ค์ JSON์ผ๋ก ํ์ฑํด์ฃผ๊ณ ์ํ๋ ๊ฐ ์ถ์ถ
utcOffset = JSON.parse(data.data).RESULT_DATA.O_UTC_OFFSET
// ์ฌ์ฉ์ ํ๋ฉด์ ์ธํ
$NC.setValue("#edtRemark1",utcOffset);
});
}
@Service
public class WorldTimeAPIService {
public Map<String, Object> getWorldTime(final Map<String, Object> params) throws Exception {
Map<String, Object> resultMap = new HashMap<String, Object>();
final String COUNTRY_KEY = (String)params.get("P_COUNTRY_INFO");
final String URLPATH = "http://worldtimeapi.org/api/timezone/"+COUNTRY_KEY;
try {
URL url = new URL(URLPATH);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET"); // http ๋ฉ์๋
conn.setRequestProperty("Content-Type", "application/json"); // header Content-Type ์ ๋ณด
// ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ ์ฝ์ด์ค๊ธฐ
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) { // ์ฝ์ ์ ์์ ๋ ๊น์ง ๋ฐ๋ณต
sb.append(line);
}
br.close();
conn.disconnect();
JSONObject jo = new JSONObject(sb.toString());
resultMap.put("O_UTC_OFFSET", jo.get("utc_offset"));
resultMap.put("O_MSG", Consts.OK);
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
}
์ด๋ฒ ํ ์คํธ์์๋ SYSDATE์ ์์ฐจ๋ก ๊ณ์ฐํ๋ ๋ฐฉ์์ ํ ์คํธํ๊ธฐ ์ํด GMT ์์ฐจ๋ง ๊ฐ์ ธ์์ง๋ง, ๊ทธ ์ธ์๋ ์ ์๋ฏธํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
'๊ฐ๋ฐ์ผ๊ธฐ ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ADsP] ๋น์ ๊ณต์ ๋น์ ๋ฌธ๊ฐ ํฉ๊ฒฉ ํ๊ธฐ - ํ์ค์ ์ธ 5์ผ ๊ณต๋ถ๋ฒ (0) | 2024.03.18 |
---|---|
[Python] OSError: [E050] Can't find model 'en_core_web_sm' ์๋ฌ ํด๊ฒฐ (1) | 2024.03.16 |
[Oracle] ์ค๋ผํด ๊ธฐ์ด ๋ด์ฅํจ์ ๋ชจ์ (2) | 2024.01.23 |
[DBMS] SqlDeveloper์์ DB ๋น๊ตํ๊ธฐ (0) | 2023.12.21 |
[Oracle] ํ์ฅ GROUP ํจ์ - GROUPPING() (2) | 2023.12.06 |