Java-Date构造函数接受日期字符串,但已弃用。尝试过其他选择,但没有运气
这很有效,但如果我用这样的东西Java-Date构造函数接受日期字符串,但已弃用。尝试过其他选择,但没有运气,java,datetime,date,Java,Datetime,Date,这很有效,但如果我用这样的东西 String temp_date="07/28/2011 11:06:37 AM"; Date date = new Date(temp_date); //Depricated SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss"); String comp_date= sdf.format(date); System.out.println(comp_date); 将引发此
String temp_date="07/28/2011 11:06:37 AM";
Date date = new Date(temp_date); //Depricated
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss");
String comp_date= sdf.format(date);
System.out.println(comp_date);
将引发此异常:
String temp_date="07/28/2011 11:06:37 AM";
try{
SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy hh:mm:ss");
Date comp_date= sdf.parse(temp_date);
System.out.println(comp_date);
}catch(Exception e){
System.out.println(e);
}
您的解析模式是错误的。它与日期字符串表示形式不匹配。
MMM
表示一个3个字母的本地化月份缩写,而实际日期中有两位数字的月份号,则需要MM
。您还将/
作为日期/月/年分隔符,而不是-
。对于AM/PM标记,之后还需要一个a
,以便可以解析右侧的hh
这应该起作用:
java.text.ParseException: Unparseable date: "07/28/2011 11:06:37 AM"
有关这些模式的解释,请阅读
我相信您的具体功能需求是将模式
MM/dd/yyyyy hh:MM:ss a
指定的给定日期字符串转换为模式MMM dd yyyy hh:MM:ss
指定的另一种日期字符串格式。在这种情况下,您应该有两个SimpleDateFormat
实例,一个将给定模式中的字符串解析为Date
,另一个将解析后的Date
格式化为给定模式。这应该满足您的要求:
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
请注意,我将输出中的
hh
更改为hh
,因为否则它将在没有AM/PM标记的情况下以1-12小时表示结束。HH
表示为0-23小时。您提供的SimpleDateFormat格式在月份、日期和年份之间使用-
。您的字符串使用斜杠。乍一看,您的格式字符串似乎有误
嗯--您为月份指定了此项,但您没有传递3个字符的月份
试试MM,看看这是否有帮助
有关其他日期格式信息,请参见此页:
关于java.util.Date被弃用的问题,您可能希望开始了解抽象的java.util.Calendar类及其直接实现:java.util。GregorianCalendar@Gevorg:
Calendar
在解析/格式化从/到String
的日期时没有太大帮助。无论如何,我更喜欢Joda Time:。@Balus-我听说Apache commons的Beanutils用于日期转换。如果您使用beanutils-对于上述情况,它会是什么样子?@BalusC:是的,对于解析/格式化,那么DateFormat就是答案。我建议使用GC而不是简单的日期来处理日期时间。我不熟悉乔达时代,我会调查的。谢谢,不客气。既然你是新来的,请别忘了在回答问题时,只要答案对你有帮助(大部分),就在上面标出“接受”。另见
String inputDate = "07/28/2011 11:06:37 AM";
Date date = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a").parse(inputDate);
String outputDate = new SimpleDateFormat("MMM-dd-yyyy HH:mm:ss").format(date);
System.out.println(outputDate); // Jul-28-2011 11:06:37