String Object to date对象。字符串

时间:2015-05-28 07:27:13

标签: java

我有一个字符串27-05-2015 09:01:53 PM。我希望它将其转换为Date object,而Date对象应该像27-05-2015 09:01:53 PM(类似于我的字符串)。

我尝试了SimpleDateFormat,但它提供了Wed May 27 00:00:00 CDT 2015。 如果我使用SimpleDateFormat的格式方法,则转换为String

代码: SimpleDateFormat formatter = new SimpleDateFormat(                 " dd-MM-yyyy HH:mm:ss a");

    String dateInString = "27-05-2015 10:23:31 PM";

    try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);

        System.out.println(formatter.format(date));
        // String s = formatter.format(date);

        // System.out.println(s.substring(7, 9) + ":" + s.substring(27));
        // System.out.println(s.substring(0, 2) +"/");
        // Date dt = Calendar.getInstance().getTime();
        // System.out.println(formatter.format(dt));
        // System.out.println(Calendar.getInstance().getTime());

    } catch (ParseException e) {
        e.printStackTrace();
    }

我希望Date对象的格式正好是27-05-2015 09:01:53 PM

4 个答案:

答案 0 :(得分:0)

以下是如何将日期转换为日期对象的示例

public class DateFormat
{
  public static void main(String[] args) throws ParseException
  {
    String dateString = "27-05-2015 09:01:53 PM";

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");

    Date date =simpleDateFormat.parse(dateString);

    System.out.println(date);
  }
}

编辑:已添加进一步检查

  public static void main(String[] args) throws ParseException
  {
    String dateString = "27-05-2015 09:01:53 PM";

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");
    Date date =simpleDateFormat.parse(dateString);
    //System.out.println(date);

    System.out.println(simpleDateFormat.format(date).equals(dateString));
  }

答案 1 :(得分:0)

为什么要在不需要时进行格式化,只需要使用SimpleDateFormat#parse方法解析字符串

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss a");
try{
Date parsedDate = sdf.parse(yourDateInString);
}catch(ParseException e){
e.printStackTrace();
}

更新:

现在要格式化解析日期,只需使用相同的格式化程序格式化它

logger.debug(sdf.format(parsedDate));

<强>输出

27-05-2015 09:01:53 PM

答案 2 :(得分:0)

不,你不能(String对象到日期对象在与String 相同的输出中)。 Date类具有自己的toString()方法实现。当您打印日期对象时,如System.out.println(date);这意味着它基本上打印了toString()方法实现格式。

Date类的toString()方法

public String toString() {
    // "EEE MMM dd HH:mm:ss zzz yyyy";
    BaseCalendar.Date date = normalize();
    StringBuilder sb = new StringBuilder(28);
    int index = date.getDayOfWeek();
    if (index == gcal.SUNDAY) {
        index = 8;
    }
    convertToAbbr(sb, wtb[index]).append(' ');            // EEE
    convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
    CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd

    CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
    CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
    CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
    TimeZone zi = date.getZone();
    if (zi != null) {
        sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
    } else {
        sb.append("GMT");
    }
    sb.append(' ').append(date.getYear());  // yyyy
    return sb.toString();
    }

答案 3 :(得分:0)

HH从0到23,hh从1到12(上午/下午)。将格式HH更改为hh

<强>更新

HH is 24 hours format.
hh is 12 hours format.