0

我正在尝试更改从数据库中检索到的日期格式,但很困难,我只有下面的相关代码。

我有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);
}
4

5 回答 5

1

是的,有更好的方法。从数据库中获取日期Date而不是字符串,您不必解析它。

java.sql.Date date = resultSet.getDate("column name");
String date_format = sdf.format(date);

Date(String)构造函数只解析文档格式的字符串。

于 2013-11-11T08:14:19.577 回答
0

你需要两个 SimpleDateFormats。一种用于解析字符串到日期(使用"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);
于 2013-11-11T08:03:02.530 回答
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();
    }
于 2013-11-11T08:03:59.670 回答
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)
于 2013-11-11T08:04:03.780 回答
0

看到这个格式这是使用完整的

日期和时间格式

这个

日期和时间格式

于 2013-11-11T08:07:26.243 回答