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.