You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将地震API返回的Long型时间转换为00/00/0000格式并在ListView显示

解决Long类型时间戳转可读日期格式并显示在ListView的问题

嗨,我来帮你搞定这个时间格式化的需求!你需要把API返回的Long类型时间戳转换成dd/MM/yyyy(也就是你要的00/00/0000)格式,然后绑定到ListView中显示,具体操作步骤如下:

1. 编写日期格式化工具方法

首先创建一个专门的方法,负责把Long类型的时间戳转换成指定格式的字符串。这里要注意:大部分地震API返回的是毫秒级时间戳,如果你的API返回的是秒级时间戳,记得要乘以1000转成毫秒哦!

// 定义格式化时间戳的方法
private String formatEarthquakeDate(long timestamp) {
    // 若API返回的是秒级时间戳,修改为 new Date(timestamp * 1000)
    Date date = new Date(timestamp);
    // 这里指定格式为dd/MM/yyyy,也就是日/月/年的00/00/0000格式
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
    return dateFormat.format(date);
}

2. 在Volley请求回调中处理数据并格式化时间

在你现有的Volley请求逻辑里,解析API返回的数据时,调用上面的方法把时间戳转成可读日期,再把处理好的数据传给ListView的适配器:

private void request() {
    String earthquakeApiUrl = "你的地震API接口地址";
    JsonArrayRequest jsonRequest = new JsonArrayRequest(Request.Method.GET, earthquakeApiUrl, null,
            response -> {
                List<String> earthquakeDataList = new ArrayList<>();
                for (int i = 0; i < response.length(); i++) {
                    try {
                        JSONObject earthquakeObj = response.getJSONObject(i);
                        // 获取API返回的Long类型时间戳
                        long rawTimestamp = earthquakeObj.getLong("timestamp"); // 替换成你API中对应的字段名
                        // 格式化时间
                        String formattedDate = formatEarthquakeDate(rawTimestamp);
                        // 拼接你需要显示的内容(比如地震名称+日期,根据你的需求调整)
                        String listItemContent = earthquakeObj.getString("title") + " | 发生日期:" + formattedDate;
                        earthquakeDataList.add(listItemContent);
                    } catch (JSONException e) {
                        e.printStackTrace();
                        // 解析出错时可以添加提示内容
                        earthquakeDataList.add("数据解析出错");
                    }
                }
                // 给ListView设置适配器
                ArrayAdapter<String> adapter = new ArrayAdapter<>(MainActivity.this,
                        android.R.layout.simple_list_item_1, earthquakeDataList);
                l.setAdapter(adapter);
            },
            error -> {
                // 请求失败的处理逻辑
                Toast.makeText(MainActivity.this, "获取地震数据失败,请重试", Toast.LENGTH_SHORT).show();
            });
    queue.add(jsonRequest);
}

3. 额外注意事项

  • 时间戳单位确认:一定要确认API返回的时间戳是毫秒还是秒,如果是秒,必须乘以1000后再传入Date构造器,否则会显示1970年左右的错误日期
  • Locale适配:如果需要适配不同地区的日期格式,可以修改SimpleDateFormat的Locale参数,比如Locale.CHINA或者Locale.US
  • 自定义Adapter扩展:如果你的ListView需要显示更复杂的布局(比如多个字段),可以自定义BaseAdapter,在getView方法中调用格式化方法来设置日期文本

内容的提问来源于stack exchange,提问作者RahulSingh

火山引擎 最新活动