将 'esriFieldTypeDate' 转换为人类可读的(使用 JS)

convert 'esriFieldTypeDate' to human readable (with JS)

......
dlv.innerHTML = `<b><span class='name_plc'></span></b><br>ID: <span class="ida">${feature.graphic.attributes.id}</span><br> URL: <a href="${feature.graphic.attributes.url}" target="_blank">View</a> <br> Updated: <span class='tiCon1'>${feature.graphic.attributes.updated}</span><br>Grid_value: ${feature.graphic.attributes.grid_value}<br> Event Time: <span class='tiCon2'>${feature.graphic.attributes.eventTime}</span> <style>.esri-popup__navigation { display: none;}</style>`;

let date1= $('.tiCon1').text();
let dt = new Date(date1).toUTCString();
console.log(dt);
......

以上尝试控制台为 'invalid date'。

我尝试用上面的方法来转换它,例如,它显示为无效日期...

在上面,我的事件时间和更新的查询通过 esriFieldTypeDate 解析为下面的数字。我想将它们转换为人类可读的格式。

已更新:1593543128000 <--------------------

活动时间:1593021559000 <------------------------

下面的另一个尝试,无论我做什么,我都会得到 无效日期NaN 错误。

            setTimeout(() => {
                  let dCn = $('.tiCon1').text();
                  console.log(dCn); // consoles as 1593543128000 
                  let dtD = new Date(dCn).toUTCString();
               
                  console.log(dtD);
              }, 28);

Update:: 如果我 JSON 解析上面的 dCn var 值..它确实有效..正确显示格式化日期,但是它在控制台中抛出 JSON 错误。我该如何解决?

未捕获的语法错误:JSON 中位置 0

中的意外标记 M

使用任何具有这些值的 Date JavaScript 方法应该没有问题。您收到的数字是一个日期数字,一个时间戳,代表自 1970 年 1 月 1 日 UTC 以来的毫秒数。

看看我为你做的这个例子,它说明了这一点。

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" />
  <title>
    esriFieldTypeDate | ArcGIS API for JavaScript 4.16
  </title>

  <link rel="stylesheet" href="https://js.arcgis.com/4.16/esri/themes/light/main.css" />
  <script src="https://js.arcgis.com/4.16/"></script>

  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  </style>

  <script>
    require([
      "esri/Map",
      "esri/views/MapView",
      "esri/layers/FeatureLayer"
    ], function (Map, MapView, FeatureLayer) {
      const map = new Map({
        basemap: "gray"
      });

      const view = new MapView({
        container: "viewDiv",
        map: map,
        center: [-122, 37],
        zoom: 2
      });

      const featureLayer = new FeatureLayer({
        url:
          "https://services9.arcgis.com/RHVPKKiFTONKtxq3/arcgis/rest/services/USGS_Seismic_Data_v1/FeatureServer/1"
      });

      const popupTemplate = {
        title: "{id}",
        outFields: ["*"],
        content: popupTemplateContent,
      };

      featureLayer.popupTemplate = popupTemplate;

      function customDateToString(d) {
        return `${d.getMonth()+1}/${d.getDate()}/${d.getFullYear()}`;
      }

      function popupTemplateContent(feature) {
        const div = document.createElement("div");
        const et = feature.graphic.attributes.eventTime;
        const u = feature.graphic.attributes.updated;
        const det = new Date(et);
        const du = new Date(u);
        div.innerHTML =
          `et = Event Time<br>` +
          `u = Updated<br>` +
          `et : ${et} <br>` +
          `u : ${u} <br>` +
          `Date(et).toString() : ${det.toString()} <br>` +
          `Date(u).toString() : ${det.toString()} <br>` +
          `Date(et).toUTCString() : ${det.toUTCString()} <br>` +
          `Date(u).toUTCString() : ${det.toUTCString()} <br>` +
          `Date(et).toUTCString() : ${det.toISOString()} <br>` +
          `Date(u).toUTCString() : ${det.toISOString()} <br>` +
          `customDateToString(Date(et)) : ${customDateToString(det)} <br>` +
          `customDateToString(Date(u)) : ${customDateToString(det)}`;
        return div;
      }

      map.add(featureLayer);
    });
  </script>
</head>

<body>
  <div id="viewDiv"></div>
</body>

</html>