Date Formatting In Java With Time Zone


The Problem
GAE's system timezone is UTC and I need print date using the specified timezone and format.

The Solution
We can call DateFormat.setTimeZone to set it's timezone:

  public static String formatDate(Date date, String format, TimeZone tz) {
    DateFormat df = new SimpleDateFormat(format);
    df.setTimeZone(tz);
    return df.format(date);
  }
To get get all available time zone ids: System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));
The test code is like below:
  @Test
  public void testDfWithTZ() {
    // To get all available time zone ids:
    System.out.println(Arrays.toString(TimeZone.getAvailableIDs()));
    Date date = new Date();
    String format = "yyyy-MM-dd hh:mm:ss";
    TimeZone tz = TimeZone.getTimeZone("US/Eastern");
    String dateStr = formatDate(date, format, tz);
    System.out.println(dateStr);
    
    tz = TimeZone.getTimeZone("Asia/Shanghai");
    dateStr = formatDate(date, format, tz);
    System.out.println(dateStr);
    
    // Get system's default timezone
    tz = TimeZone.getDefault();
    dateStr = formatDate(date, format, tz);
    System.out.println(dateStr);
  }

Labels

adsense (5) Algorithm (69) Algorithm Series (35) Android (7) ANT (6) bat (8) Big Data (7) Blogger (14) Bugs (6) Cache (5) Chrome (19) Code Example (29) Code Quality (7) Coding Skills (5) Database (7) Debug (16) Design (5) Dev Tips (63) Eclipse (32) Git (5) Google (33) Guava (7) How to (9) Http Client (8) IDE (7) Interview (88) J2EE (13) J2SE (49) Java (186) JavaScript (27) JSON (7) Learning code (9) Lesson Learned (6) Linux (26) Lucene-Solr (112) Mac (10) Maven (8) Network (9) Nutch2 (18) Performance (9) PowerShell (11) Problem Solving (11) Programmer Skills (6) regex (5) Scala (6) Security (9) Soft Skills (38) Spring (22) System Design (11) Testing (7) Text Mining (14) Tips (17) Tools (24) Troubleshooting (29) UIMA (9) Web Development (19) Windows (21) xml (5)