【问题标题】:convert timestamp to date将时间戳转换为日期
【发布时间】:2011-06-16 09:31:41
【问题描述】:

我从 android 中的 sms 消息中获取日期作为时间戳,以秒或毫秒为单位,我需要使用 java 将其显示为标准日期和时间。

int date      = (cursor.getColumnIndex(SmsReceiver.DATE));

这会返回一些数字,例如 1308114404722。

使用这个数字并显示为当前日期的过程是什么

【问题讨论】:

  • 也使用 Date convert = new Date(date);它显示 Thu Jan 01 5:30 ...1970 等
  • int date 不包含问题中显示的毫秒值,它只有列索引。要获得该秒值,我必须使用 String date2 = cursor.getString(date);现在这个字符串包含 130811.....

标签: java android datetime


【解决方案1】:
int date = ...
Date dateObj = new Date(date);

要格式化Date 对象,例如使用SimpleDateFormat

DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String text = df.format(dateObj);

此外,您应该将 number-of-milliseconds-since-epoch 值存储在 long 中,而不是 int 中,因为 int 不够大。 (事实上​​,数字 1308114404722 甚至不适合 32 位 int)。

【讨论】:

  • 即使使用了很长时间,我仍然得到 01-01-1970
  • @technocrat 你确定这个数字是自 1970 年 1 月 1 日以来的 毫秒 数吗?或者它可能是自 1970 年 1 月 1 日以来的 数? (在这种情况下,乘以 1000)。
  • 老兄,正如我对我的问题所评论的那样,我没有得到日期值中的毫秒。调用 cursor.getString(date) 后,它返回毫秒,我整理了其余部分。谢谢
  • 感谢您提及 int 问题。我以 int 形式接收时间戳,并且一直得到奇怪的结果。
【解决方案2】:

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm dd.MM.yyyy");
Date date = new Date(1308114404722);
Calendar cal = Calendar.getInstance();
cal.setTime(date);

【讨论】:

    【解决方案3】:

    你可以这样使用

    public static java.util.Date toDate(java.sql.Timestamp timestamp) {
    long millisec = timestamp.getTime() + (timestamp.getNanos() / 1000000);
    return new Date(millisec);
    }
    

    【讨论】:

      【解决方案4】:

      试试:

      DateFormat df = DateFormat.getInstance();
      String dateStr = df.format( new Date( date ) );
      

      【讨论】:

        【解决方案5】:

        我想这是 Epoch Timestamp 将其转换为人类可读的形式使用

        int date = (cursor.getColumnIndex(SmsReceiver.DATE));
        String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (date*1000));
        

        希望这将在转换此值时起作用:1308114404722

        时间到了2011 年 6 月 15 日星期三 05:06:44 GMT

        【讨论】:

          【解决方案6】:

          您可以轻松转换时间戳。我乘以 1000,因为有些人在保存时间戳时通常会除以 1000。您可以尝试使用 1000 或不使用。

              DateFormat format = new SimpleDateFormat("h:mm a");
              Date date = new Date();
              date.setTime(Long.parseLong(YOUR_INT_OR_LONG_TIMESTAMP)*1000);
              String readableTime = format.format(date);
          

          您可以在documentation 中探索更多格式选项

          【讨论】:

            【解决方案7】:

            要将您获得的 unix 时间戳转换为正常日期,请使用以下 sn-p 代码:

            //这里的日期应该很长

            长日期 = (cursor.getColumnIndex(SmsReceiver.DATE));

            String standardDate=DateFormat.getDateInstance().format(new Date(date);

            【讨论】:

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