Java 字符串对象到日期对象。输出与字符串相同

Java 字符串对象到日期对象。输出与字符串相同,java,Java,我有一个字符串27-05-2015 09:01:53 PM。我希望它将其转换为日期对象,日期对象应该类似于27-05-2015 09:01:53 PM(类似于我的字符串) 我尝试了SimpleDateFormat,但它给出了2015年5月27日星期三00:00:00 CDT。 如果我使用了SimpleDateFormat的格式方法,那么它将转换为String 代码: SimpleDataFormat格式化程序=新SimpleDataFormat( “dd-MM-yyyy HH:MM:ss a”)

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

我尝试了
SimpleDateFormat
,但它给出了2015年5月27日星期三00:00:00 CDT。 如果我使用了
SimpleDateFormat
的格式方法,那么它将转换为
String

代码: SimpleDataFormat格式化程序=新SimpleDataFormat( “dd-MM-yyyy HH:MM:ss a”)


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

下面是一个如何将日期转换为Date对象的示例

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

为什么要在不需要时格式化,只需要使用
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
不可以(字符串对象到日期对象与字符串在同一输出中)。Date类有自己的toString()方法实现;这意味着它基本上打印了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();
    }

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

更新

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

显示您的代码please@CoderNeji我想我漏掉了一行:SimpleDateFormat formatter=newsimpledateformat(“dd-MM-yyy-HH:MM:ss-a”);它将于2015年5月27日星期三00:00:00 CDT发出。我希望与27-05-2015 09:01:53 pmi相同,如果我运行此命令,我将获得
27-05-2015 09:01:53 PM
System.out.println(simpleDataFormat.format(date).equals(dateString));在
新SimpleDataFormat(“dd-MM-yyy-hh:MM:ss-a”,“Locale.US”)上添加本地代码类似于
Locale.US
。。默认时区是什么?通过添加
SimpleDataFormat.setTimeZone(TimeZone.getTimeZone(“GMT”))
HH is 24 hours format.
hh is 12 hours format.