You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

地震数据JSON脚本开发求助:日期格式化与数值截断问题

解决方案:日期格式化 + 数值字符截断

嘿,我来帮你搞定这两个问题!先解决日期时间的格式化问题,再处理震级和深度的字符截断需求~

1. 日期时间格式化问题

你当前代码里直接用dateTime.getMonth()会得到0-11的数字(JS的月份是从0开始计数的),而且没有补零处理,显示出来会很奇怪(比如1月会显示成0)。我们可以写一个简单的格式化函数,把日期转成类似DD/MM/YYYY HH:MM的规范格式,和你参考页面的风格对齐:

function formatDateTime(dateString) {
  const date = new Date(dateString);
  // 给日、月、小时、分钟补零,确保是两位数显示
  const day = String(date.getDate()).padStart(2, '0');
  const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份加1修正0-based的问题
  const year = date.getFullYear();
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  
  return `${day}/${month}/${year} ${hours}:${minutes}`;
}

2. 震级和深度保留前3位字符

要实现这个需求,我们可以把数值转成字符串后,用slice(0,3)截取前3个字符。就算数值本身不足3个字符(比如整数6),slice也会直接返回整个字符串,不会出现错误:

// 处理震级
const truncatedMagnitude = val.properties.magnitude.toString().slice(0, 3);
// 处理深度
const truncatedDepth = val.properties.depth.toString().slice(0, 3);

修改后的完整代码

把上面的逻辑整合到你的代码里,最终版本如下:

JavaScript部分

$(document).ready(function() {
  returnQuakes(4);
});

function returnNews() {
  var url = 'https://api.geonet.org.nz/news/geonet';
  $.getJSON(url, function(data) {
    var items = [];
    $.each(data.feed, function(key, val) {
      items.push("<li>" + "<a target='_blank' " + "href='" + val.link + "'>" + val.title + "</a>" + "</li>");
    });
    $("<ul/>", {
      "class": "list",
      html: items.join("")
    }).appendTo("#news");
  });
}

// 新增日期格式化函数
function formatDateTime(dateString) {
  const date = new Date(dateString);
  const day = String(date.getDate()).padStart(2, '0');
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const year = date.getFullYear();
  const hours = String(date.getHours()).padStart(2, '0');
  const minutes = String(date.getMinutes()).padStart(2, '0');
  
  return `${day}/${month}/${year} ${hours}:${minutes}`;
}

function returnQuakes(greaterThan) {
  var url = 'https://api.geonet.org.nz/quake?MMI=' + greaterThan;
  $.getJSON(url, function(data) {
    var items = [];
    $.each(data.features, function(key, val) {
      // 格式化时间
      const formattedTime = formatDateTime(val.properties.time);
      // 截断震级和深度到前3位字符
      const truncatedMagnitude = val.properties.magnitude.toString().slice(0, 3);
      const truncatedDepth = val.properties.depth.toString().slice(0, 3);
      
      items.push("<li class='title'>" + val.properties.locality + "<ul>" +
        "<li>Magnitude: " + truncatedMagnitude + "</li>" +
        "<li>Depth: " + truncatedDepth + "</li>" +
        "<li>Time: " + formattedTime + "</li>" +
        "</ul></li>");
    });
    $("<ul/>", {
      "class": "list",
      html: items.join("")
    }).appendTo("#quakes");
  });
}

HTML部分

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="quakes"></div>

这样修改后,日期会显示成规范的DD/MM/YYYY HH:MM格式,震级和深度也会只保留前3个字符,和你参考的页面风格一致啦~

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:02:58