【问题标题】:getting error in conversion Date into Timestamp?将日期转换为时间戳时出错?
【发布时间】:2023-03-29 16:05:01
【问题描述】:

我想将日期转换为时间戳,但出现如下错误。

如何获取时间戳?

我得到了日、月、年,想转换成时间戳,但出现错误。

代码:-

 String dob1=year+"-"+month+"-"+day;
      DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
                    Date date = null;
                    try {
                        date = (Date)formatter.parse(dob1);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                    String dob= String.valueOf(date.getTime());
                    System.out.println("Today is " +date.getTime());

错误:--

W/System.err: java.text.ParseException: Unparseable date: "1903-MAR-1"
    W/System.err:     at android.icu.text.DateFormat.parse(DateFormat.java:651)
    W/System.err:     at com.a98fit.neeraj.a98fit.Age$4.onClick(Age.java:154)
    W/System.err:     at android.view.View.performClick(View.java:5612)
    W/System.err:     at android.view.View$PerformClick.run(View.java:22285)
    W/System.err:     at android.os.Handler.handleCallback(Handler.java:751)
    W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
    W/System.err:     at android.os.Looper.loop(Looper.java:154)
    W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6123)
    W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
    W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
    D/AndroidRuntime: Shutting down VM
    E/AndroidRuntime: FATAL EXCEPTION: main
                      Process: com.a98fit.neeraj.a98fit, PID: 31261
                      java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object reference
                          at com.a98fit.neeraj.a98fit.Age$4.onClick(Age.java:158)
                          at android.view.View.performClick(View.java:5612)
                          at android.view.View$PerformClick.run(View.java:22285)
                          at android.os.Handler.handleCallback(Handler.java:751)
                          at android.os.Handler.dispatchMessage(Handler.java:95)
                          at android.os.Looper.loop(Looper.java:154)
                          at android.app.ActivityThread.main(ActivityThread.java:6123)
                          at java.lang.reflect.Method.invoke(Native Method)
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

【问题讨论】:

  • 您的日期格式错误。那里的 T 是什么?我认为您正在尝试将 ISO 时间格式转换为 java 类型。那是您的日期对象没有将值分配给日期对象。它正在发生异常。那么你正在尝试从 null 获取时间。所以会发生这个错误。
  • @Ahamed 是的,我想要 ISO 时间/如何消除此错误?
  • 没有得到你能告诉我应该在哪里改变吗?

标签: android datetime timestamp


【解决方案1】:

将您的日期字符串与SimpleDateFormat 模式匹配

使用这个:

String your_Date="1903-Mar-1";

DateFormat formatter = new SimpleDateFormat("yyyy-MMM-dd");
Date date = null;
try {
    date = (Date)formatter.parse(dob1);
    String dob= String.valueOf(date.getTime());
    System.out.println("TimeStamp: " +date.getTime());
} catch (ParseException e) {
    e.printStackTrace();
}

有关SimpleDateFormat的更多信息,请访问This

【讨论】:

  • 同样的错误我得到了这个。
  • 你的日期的字符串格式是什么?如果这个1903-MAR-1是格式应用程序不会崩溃!
  • 根据你应该是什么?
  • 您要添加String dob1=year+"-"+month+"-"+day;,确保它们采用"1903-MAR-1" 格式...首先尝试使用预定义的String your_Date="1903-MAR-1"; 字符串解析日期。看看有没有效果
  • 我正在存储 year=1903,month=MAR,day=1
【解决方案2】:

可能每个人都面临这种日期格式的问题。所以,我的解决方案是用 joda-time 库完成的

..here 您也可以使用该问题。 SimpleDateFormat 在转换 ISO 模式时出现问题。我使用了这个解决方案。我不知道为什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2020-10-19
    • 2017-04-25
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多