web-dev-qa-db-ja.com

エラーJava.text.ParseException:Unparseabledateが発生しました

日付形式を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にします。

7
Annu

コードを次のように変更する必要があります。

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

日付の解析に間違った日付形式を使用しています。

5

これを使用すると機能します:

SimpleDateFormat formatter=new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");

別の形式で設定された SimpleDateFormat で日付を解析することはできません

7
Harry Joy

このコードでは、Java日付を解析するように指定された形式を使用して、次にそれを出力するように指示しています。したがって、使用する形式文字列は入力の形式と一致する必要があります日付文字列。機能しないので、機能しないのも当然です。

2つの異なる形式間で日付を変換するには、おそらく2つの異なるDateFormatオブジェクトを使用します。1つは解析用で、もう1つは印刷用です。

3
Robin Green

次のコードを試してください。

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, null, ex);
        ex.printStackTrace();
    }
    System.out.println("output: "+ formatter.format(v_date));
}
}

これはあなたに望ましい出力を与えます!

3
Vikram

これは私と非常にうまく機能します

SimpleDateFormat format1 = new SimpleDateFormat( "dd-MM-yyyy");

フォーマットされた文字列= format1.format(objectValue);
Date javaDate = format1.parse(formatted);

0
Mohamed Mostafa