【问题标题】:Stuck at converting unix timestamp string into readable date卡在将 unix 时间戳字符串转换为可读日期
【发布时间】:2017-12-31 16:25:05
【问题描述】:

试图尽快将其转换为可读的日期格式,结果卡住了:

item.put("date", DateFormat.format("dd/MM/yyyy hh:mm:ssaa", jsonChildNode.optString("date") * 1000L));

Error: Operator '*' cannot be applied to 'java.lang.String', 'long'

【问题讨论】:

  • 哈哈哈.... 3141
  • 你试图将一个字符串对象与一个很长的原语相乘......这是行不通的
  • 获取可读日期的任何快捷方式?
  • @Fresco 请使用长值而不是整数...检查我的答案。当您将整数乘以 1000 时,使用整数可能会出现整数溢出问题......我的回答为您提供了一种替代方法

标签: java android


【解决方案1】:

上面的答案忽略了它是一个 Unix 时间戳的事实,因此它不适合 int 值。同样从您的问题来看,它似乎是以秒为单位的 Unix 时间戳,而不是 Date 类接受的毫秒。

SimpleDateFormat sdf = new SimpleDateFormat ("dd/Mm/yyyy hh:mm:ss aa");

long unixTimeInSeconds = jsonChildNode.getLong("date");

item.put("date",sdf.format(new Date(unixTimeInSeconds * 1000L)));


Log.d("tag",sdf.format(new Date(unixTimeInSeconds * 1000L)));

这里将所有内容都放在一个 try catch 块中,因为如果时间戳键不存在或有一些无法解析为 long 的数据,此代码可能会引发异常

【讨论】:

    【解决方案2】:

    更改代码:

    int date = Integer.valueOf(jsonChildNode.optString("date"));
    item.put("date", DateUtils.formatDateTime(HistoryWithdrawal.this, date, DateUtils.FORMAT_SHOW_DATE));
    

    【讨论】:

    • 这是一个unix时间戳中的日期...它会大于int支持的最大值,请使用Long
    猜你喜欢
    • 2022-01-21
    • 2011-03-16
    • 1970-01-01
    • 2019-07-30
    • 2012-06-23
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多