我收到错误java.text.ParseException:无法解析的日期

问题描述

|| 我希望日期格式为dd-MMM-yyyy。 我的代码是:
String v_date_str=\"Sun Mar 06 11:28:16 IST 2011\";
        DateFormat formatter;
        formatter = new SimpleDateFormat(\"dd-MMM-yyyy\");
        Date date_temp=null;
        try {
            date_temp = (Date) formatter.parse(v_date_str);
        } catch (ParseException ex) {
            Logger.getLogger(Attendance_Calculation.class.getName()).log(Level.SEVERE,null,ex);
        }
        System.out.println(\"output: \"+date_temp);
但是,我得到的错误为:
    The log message is null.
java.text.ParseException: Unparseable date: \"Sun Mar 06 11:28:16 IST 2011\"
        at java.text.DateFormat.parse(DateFormat.java:337)
        at org.fes.pis.jsf.main.Attendance_Calculation.btn_show_pending_appl_action(Attendance_Calculation.java:415)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
        at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
        at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
        at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99)
        at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
        at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771)
        at javax.faces.component.UICommand.broadcast(UICommand.java:372)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
        at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:597)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:872)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLReadTask.process(SSLReadTask.java:444)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLReadTask.doTask(SSLReadTask.java:230)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
谢谢你的帮助.... 但是,我希望日期格式为dd-MMM-yyyy。     

解决方法

您应该将代码更改为:
String v_date_str=\"Sun Mar 06 11:28:16 IST 2011\";
DateFormat formatter;
formatter = new SimpleDateFormat(\"EEE MMM d HH:mm:ss zzz yyyy\");
Date date_temp=null;
try {
        date_temp = (Date) formatter.parse(v_date_str);
    } catch (ParseException ex) {
  Logger.getLogger(Attendance_Calculation.class.getName()).log(Level.SEVERE,null,ex);
}
System.out.println(\"output: \"+date_temp);
您使用错误的日期格式来解析日期。     ,使用它可以工作:
SimpleDateFormat formatter=new SimpleDateFormat(\"EEE MMM d HH:mm:ss zzz yyyy\");
您不能使用设置为其他格式的SimpleDateFormat解析日期     ,在这段代码中,您要告诉Java使用给定的格式解析日期,然后打印出来。因此,您使用的格式字符串必须与输入日期字符串的格式匹配。由于不起作用,因此不起作用也就不足为奇了。 要在两种不同格式之间转换日期,您可能需要使用两个不同的DateFormat对象,一个用于解析,另一个用于打印。     ,尝试以下代码:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;


public class SimpleDateFormat02 {

public static void main(String[] args) throws ParseException {
    String v_date_str=\"Sun Mar 06 11:28:16 IST 2011\";
    Date v_date = new SimpleDateFormat(\"EEE MMM dd HH:mm:ss zzz yyyy\",Locale.ENGLISH).parse(v_date_str);
    DateFormat formatter = null;

    formatter = new SimpleDateFormat(\"dd-MMM-yyyy\");
    Date date_temp=null;
    try {
        date_temp = (Date) formatter.parse(\"31-Dec-2012\"); // String of same format a formatter

    } catch (ParseException ex) {
        //Logger.getLogger(Attendance_Calculation.class.getName()).log(Level.SEVERE,ex);
        ex.printStackTrace();
    }
    System.out.println(\"output: \"+ formatter.format(v_date));
}
}
这给您想要的输出!     ,这对我来说很好 SimpleDateFormat format1 = new SimpleDateFormat(\“ dd-MM-yyyy \”); 格式化的字符串= format1.format(objectValue); 日期javaDate = format1.parse(格式化);     ,我得到了解决方案,
String v_date_str = \"Sun Mar 06 11:28:16 IST 2011\";
    DateFormat formatter = new SimpleDateFormat(\"EEE MMM d HH:mm:ss zzz yyyy\");
    String d_temp;
    Date dTemp;
    try {
        dTemp = formatter.parse(v_date_str);
        formatter=new SimpleDateFormat(\"dd-MMM-yyyy\");
        d_temp=formatter.format(dTemp);
        System.out.println(\"val : \" + d_temp);
    } catch (ParseException ex) {
    }
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...