我正在尝试更改从数据库中检索的日期格式,但很难,我只有下面的相关代码。
我的dateStr
是一个字符串,当前格式为YYYY-MM-DD hh:mm:ss (2013-12-01 13:12:02)
,我想要的是dd MMM yy, HH:mm (1 Dec 13, 13:12)
。
我尝试的是以下内容:
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yy, HH:mm:ss");
Date date = new Date(dateStr);
String date_format = sdf.format(date);
以上不起作用,我也尝试过其他用户提出类似问题的其他方法,但通常只返回格式化字符串
另外,上面的方法告诉我“不推荐使用构造函数Date(String)”,所以想知道是否有更好的方法
这是完整的代码:
public void updateData(MessageInfo[] messages, FriendInfo[] friends,
FriendInfo[] unApprovedFriends, String userKey) {
this.setUserKey(userKey);
// FriendController.
MessageController.setMessagesInfo(messages);
// Log.i("MESSAGEIMSERVICE","messages.length="+messages.length);
int i = 0;
while (i < messages.length) {
//TODO this problem needs a fix
String dateStr = messages[i].sentdt;
messageReceived(messages[i].userid, messages[i].messagetext, dateStr);
i++;
}
FriendController.setFriendsInfo(friends);
FriendController.setUnapprovedFriendsInfo(unApprovedFriends);
}
答案 0 :(得分:1)
是的,还有更好的方法。从数据库中获取日期为Date
而不是字符串,您不必解析它。
java.sql.Date date = resultSet.getDate("column name");
String date_format = sdf.format(date);
Date(String)
构造函数仅解析the documented format中的字符串。
答案 1 :(得分:0)
您需要两个 SimpleDateFormat
。一个用于解析String到目前为止(使用"YYYY-MM-DD hh:mm:ss"
模板)
另一个用于将日期格式化为预期的字符串(使用"dd MMM yy, HH:mm:ss"
),类似于您已经完成的操作。
SimpleDateFormat inputSdf = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss");
Date date = inputSdf.parse(dateStr);
SimpleDateFormat outputSdf = new SimpleDateFormat("dd MMM yy, HH:mm:ss");
String date_format = sdf.format(date);
答案 2 :(得分:0)
试试这个:
String dateString = "03/26/2012 11:49:00 AM";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
Date convertedDate = new Date();
try {
convertedDate = dateFormat.parse(dateString);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 3 :(得分:0)
试试这个,它应该有效:
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss");
Date d;
try {
d = fmt.parse(st);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
SimpleDateFormat prnt = new SimpleDateFormat("dd MMM yyyy, HH:mm:ss");
String newDate=prnt.format(d)
答案 4 :(得分:0)