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));