Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Date构造函数接受日期字符串,但已弃用。尝试过其他选择,但没有运气_Java_Datetime_Date - Fatal编程技术网

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