2016-11-29 261 views
0

我想通过时区和偏移量获取格式化的日期和时间。最近我用这个代码进行格式化。如何使用java中的偏移量获取带日期时间和时区的格式化日期

public static String getFormattedLicenseDate(long date) { 
     DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG); 
     return dateFormat.format(new Date(date)); 
} 

如果输入为1476786856310的此方法返回“16年10月18日下午4时04分16秒HST”,但我想修改这种方法来获得“2016年10月18日16时04分04秒HST (HST-10:00)”

有什么模式来得到这个输出,如 “二零一六年十月十八日16时04分04秒HST(HST-10:00)”

+0

搜索发布前堆栈溢出。这已经被处理了很多次了。 –

回答

0

您可以使用SimpleDateFormat与格式"MMM dd, yyyy HH:mm:ss z (zXXX)"

public static String getFormattedLicenseDate(long date) { 
    SimpleDateFormat format = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z (zXXX)"); 
    return format.format(new Date(date)); 
} 
+0

这对我的问题可以,但如果我想在大括号中使用'GMT',那么我应该用什么来代替'z'。例如。 “2016年10月18日16时04分04秒HST(GMT-10:00)” –

+0

是的,你应该自己尝试,你可以添加任何字符消除SimpleDateFormat字母http://docs.oracle.com/javase/6/ docs/api/java/text/SimpleDateFormat.html – Jerry06

0
return new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z (zZ)").format(new Date())); 

SimpleDateFormat JavaDoc

  • z:一般时区(太平洋标准时间; PST)
  • Z:RFC 822时区(-0800)
+0

请解释你的代码,代码只有答案不是很有用 –

0
DateFormat dateFormat =new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z (zZ)"); 
return dateFormat.format(new Date(date)); 

更多有关日期格式参考this

+0

这些麻烦的类现在是遗留的,被java.time类取代。而你忽略了时区的关键问题。 –