2016-12-14 5 views
1

私はデータベースから日付と時刻を取得する必要があります。米国の場合、複数のタイムゾーンがあります。だから私はDBから来ている時間を現在の時間帯に変換したい。は、米国の異なるタイムゾーンに時刻を変換します。

すなわち、私は何かのような、DB時間にGMT形式として保存されますがPSTのユーザーのためにPSTにその時間を変換したいされたい、MST MSTユーザーのために、CST CSTユーザー用とEST ESTユーザーのために。

編集:: 何とか私は別のタイムゾーンの時間をフェッチすることができます。

public static void main(String[] args) { 
     Calendar localTime = Calendar.getInstance(); 
     localTime.setTime(new Date()); 
     System.out.println("PST::"+getTimeByTimezone("PST",localTime)); 
     System.out.println("MST::"+getTimeByTimezone("MST",localTime)); 
     System.out.println("CST::"+getTimeByTimezone("CST",localTime)); 
     System.out.println("EST::"+getTimeByTimezone("EST",localTime)); 
    } 

    public static String getTimeByTimezone(String timeZone,Calendar localTime){  

     Calendar indiaTime = new GregorianCalendar(TimeZone.getTimeZone(timeZone)); 
     indiaTime.setTimeInMillis(localTime.getTimeInMillis()); 
     int hour = indiaTime.get(Calendar.HOUR); 
     int minute = indiaTime.get(Calendar.MINUTE); 
     int second = indiaTime.get(Calendar.SECOND); 
     int year = indiaTime.get(Calendar.YEAR); 
     //System.out.printf("India time: %02d:%02d:%02d %02d\n", hour, minute, second, year); 
     return hour+":"+minute; 

    } 

しかし、私はすでにページに公開されている時間を変換したいと思います。

+0

私はあなたが実際にPSTを望んでいないと思っています - あなたは「太平洋時間」などが望ましいと思われます。それで、適切なタイムゾーンはありますか?これまでに何を試しましたか?何が起こったのですか?この質問は現時点では不明です。 [mcve]は本当に助けになるでしょう... –

+0

「*しかし、私はページにすでに公開されている時間を変換したいですか?」それまでの問題は、GMT時間をデータベースからユーザーのタイムゾーンに変換することです。その意味は何ですか?既に「公開」されている時間と何が関係していますか? – Andreas

+0

GMT形式がページに公開されていることは確かです。別のタイムゾーンに変換する必要があります – Akash

答えて

4

あなたはでJava 8ZonedDateTimeを使用することができます。

public String getZonedDateString(Date date, ZoneId targetZoneId) { 
    ZoneId zoneId = ZoneOffset.UTC; // This should be the zone of your database 
    ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(date.toInstant(), zoneId); 
    ZonedDateTime newZonedDateTime = zonedDateTime.withZoneSameInstant(targetZoneId); 
    return DateTimeFormatter.ofPattern("MMM d yyy hh:mm") .format(newZonedDateTime); 
} 

使用法:

Date date = new Date(); 
ZoneOffset newZoneId = ZoneOffset.of(ZoneId.SHORT_IDS.get("MST")); 
String dateString = getZonedDateString(date, newZoneId); 

使用方法はこちらをご覧くださいZoneOffset


前のJava 8:

public String getZonedDateString(Date date, TimeZone targetZone) { 
    SimpleDateFormat format = new SimpleDateFormat("MMM d yyy hh:mm"); 
    format.setTimeZone(targetZone); 
    return format.format(date); 
} 

使用法:

TimeZone targetZone = TimeZone.getTimeZone("MST"); 
String dateString = getZonedDateString(date, targetZone); 

それは私には完璧にうまく働いたTimeZone

+0

私はJDK7を使用しています。 ZonedDateTImeの他のクラスinstone? – Akash

+0

答えを更新しました – JDC

0

使用する方法はこちらをご覧ください。 GMTからPSTタイムゾーンに変換できました。

DateFormat gmtFormat = new SimpleDateFormat("HH:mm"); 
     gmtFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 

     Date date = null; 
     try { 
      date = gmtFormat.parse("11:10"); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     DateFormat pstFormat = new SimpleDateFormat("HH:mm"); 
     pstFormat.setTimeZone(TimeZone.getTimeZone("PST")); 

     String timedd = pstFormat.format(date); 
     System.out.println(pstFormat.format(date)); 
関連する問題