SimpleDateFormat字符串

我有这个代码块,其中dateFormat.format将始终是一个string这就是我在这里做.toString()原因。 我收到错误“无法将给定对象格式化为日期”。

有没有办法做到这一点? 请注意,字符串来自数据库我在这里使用了新的Date()作为示例。

 SimpleDateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy"); String sCertDate = dateFormat.format(new Date().toString()); 

DateFormat #format接受Date,而不是字符串。

使用

 String sCertDate = dateFormat.format(new Date()); 

如果您有来自数据库的字符串是特定格式并且您想要转换为日期,则应使用parse方法。

@Sonesh – 我们假设你在数据库中有一个恰好代表Date的字符串(可能更好地将对象作为日期存储在数据库中?),然后你首先将它parse为你想要的格式然后format它到你想要的字符串格式。

 // Assumes your date is stored in db with format 08/01/2011 SimpleDateFormat dateFormatOfStringInDB = new SimpleDateFormat("MM/dd/yyyy"); Date d1 = dateFormatOfStringInDB.parse(yourDBString); SimpleDateFormat dateFormatYouWant = new SimpleDateFormat("MMMMM dd, yyyy"); String sCertDate = dateFormatYouWant.format(d1); 

SimpleDateFormat有两个应用程序:

  • 解析一个字符串 – 当你有一个日期表示为字符串,并且你想获得相应的Date对象。 然后使用dateFormat.parse(string)

  • 格式化日期 – 当您有Date对象并且希望以特定方式格式化它时(通常是为了向用户显示)。 在这种情况下使用dateFormat.format(date)

这两个方法是互惠的 – 一个接受日期并返回一个字符串,另一个接受一个字符串并返回一个日期。

对于您的特定情况,也许您需要.parse(..) 。 但请注意,每个“自我尊重”的数据库驱动程序都应该有一个选项来返回Date而不是某些字符串表示。 如果您碰巧在数据库中将日期存储为字符串 – 请勿这样做。 使用本机日期类型。

如果需要读取具有一种String格式的Date并将其输出为另一种String格式,则需要2个格式化程序,例如:

 SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat outputFormat = new SimpleDateFormat("MMMMM dd, yyyy"); String output = outputFormat.format(inputFormat.parse(input));