- execute?command 클래스리 팩키지 팩토링
[Tadpole.git] / com.hangum.tadpole.commons.sql / src / com / hangum / tadpole / engine / utils / TimeZoneUtil.java
blob2ef8dc507e082cb8fbe16720974a8fac77223b58
1 /*******************************************************************************
2 * Copyright (c) 2016 hangum.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser Public License v2.1
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
7 *
8 * Contributors:
9 * hangum - initial API and implementation
10 ******************************************************************************/
11 package com.hangum.tadpole.engine.utils;
13 import java.text.SimpleDateFormat;
14 import java.util.Date;
15 import java.util.Set;
17 import org.apache.commons.lang.StringUtils;
18 import org.apache.log4j.Logger;
19 //import org.joda.time.DateTime;
20 //import org.joda.time.DateTimeZone;
21 //import org.joda.time.format.DateTimeFormat;
22 //import org.joda.time.format.DateTimeFormatter;
23 import org.joda.time.DateTime;
24 import org.joda.time.DateTimeZone;
25 import org.joda.time.format.DateTimeFormat;
26 import org.joda.time.format.DateTimeFormatter;
28 import com.hangum.tadpole.preference.define.GetAdminPreference;
29 import com.hangum.tadpole.session.manager.SessionManager;
31 /**
32 * utc로 저장되어 있는 시간을 사용자가 원하는 시간대로 바꾸어 보여줍니다.
34 * @author hangum
37 public class TimeZoneUtil {
38 private static final Logger logger = Logger.getLogger(TimeZoneUtil.class);
40 /**
41 * timezone list
43 * @return
45 public static Set<String> getTimezoneList() {
46 return DateTimeZone.getAvailableIDs();
49 /**
50 * db의 timezone 이 있다면 사용자의 타임존으로 바꿔준다.
52 * @param date
53 * @return
55 public static String dateToStr(Date date) {
56 String dbTimeZone = GetAdminPreference.getDBTimezone();
58 // db의 timezone 없다면 기본 시간으로 바꾼다.
59 if(StringUtils.isEmpty(dbTimeZone)) {
60 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
61 return sdf.format(date);
62 } else {
63 // 서버 타임 UTC를 로컬 타임존으로 변경합니다.
64 DateTime targetDateTime = new DateTime(date).withZone(DateTimeZone.forID(SessionManager.getTimezone()));
65 String strPretty = targetDateTime.toString(prettyDateTimeFormater());
67 // if(logger.isDebugEnabled()) {
68 // logger.debug(String.format("[SessionManager dbTimezone] %s => %s", SessionManager.getTimezone(), targetDateTime));
69 // logger.debug(String.format("[strPretty] %s", strPretty));
70 // logger.debug("===============================================================");
71 // }
73 return strPretty;
77 /**
78 * 사용자 로컬 타임존을 서버의 타임존으로 바꿔준다.
80 * @param localTimeMills
81 * @return
83 public static long chageTimeZone(long localTimeMills) {
84 String dbTimeZone = GetAdminPreference.getDBTimezone();
85 // db의 timezone 없다면 기본 시간으로 바꾼다.
86 if(StringUtils.isEmpty(dbTimeZone)) {
87 return localTimeMills;
88 } else {
89 // 서버 타임 UTC를 로컬 타임존으로 변경합니다.
90 DateTime sourceDateTime = new DateTime(localTimeMills, DateTimeZone.forID(SessionManager.getTimezone()));
91 DateTime targetDateTime = sourceDateTime.withZone(DateTimeZone.forID(dbTimeZone));
92 if(logger.isDebugEnabled()) {
93 logger.debug(String.format("[SessionManager dbTimezone] %s => %s => %s", SessionManager.getTimezone(), localTimeMills, sourceDateTime.toString()));
94 logger.debug(String.format("[targetDateTime] %s => %s", targetDateTime.getMillis(), targetDateTime.toString()));
95 logger.debug("===============================================================");
98 return targetDateTime.getMillis();
103 * prettyDate
104 * @param date
105 * @return
107 public static DateTimeFormatter prettyDateTimeFormater() {
108 DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
109 return dtf;
112 // /**
113 // * sample date time
114 // * @param args
115 // */
116 // public static void main(String[] args) {
117 //// DateTimeZone timeZoneUTC = DateTimeZone.forID( "UTC" );
118 //// DateTimeZone timeZoneLondon = DateTimeZone.forID( "Europe/London" );
119 //// DateTimeZone timeZoneKolkata = DateTimeZone.forID( "Asia/Kolkata" );
120 //// DateTimeZone timeZoneNewYork = DateTimeZone.forID( "America/New_York" );
121 // DateTimeZone timeAsiaSeoul = DateTimeZone.forID( "Asia/Seoul" );
123 // DateTime nowSeoul = DateTime.now( timeAsiaSeoul );
124 // System.out.println(String.format("=%s:%s", "nowSeoul", nowSeoul) );
127 // DateTime nowUtcnowSeoul = nowSeoul.withZone( DateTimeZone.UTC ); // Built-in constant for UTC.
128 // System.out.println(String.format("=%s:%s", "nowUtcnowSeoul", nowUtcnowSeoul) );
129 // }
131 // /**
132 // * defaultti
133 // * @param date
134 // * @return
135 // */
136 // private static String defaultTime(Date date) {
137 // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
138 // return sdf.format(date);
139 // }