Android日期格式

时间:2013-11-11 08:00:18

标签: java android date

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

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

}

5 个答案:

答案 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)

请参阅此格式,这是使用完整

Date and Time Format

这个

Date and Time format