преобразовать esriFieldTypeDate в удобочитаемый (с JS) - PullRequest
0 голосов
/ 13 июля 2020
......
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);
......

Вышеупомянутая попытка консолей как 'недопустимая дата'.

Я пытаюсь преобразовать ее, например, и консоль как недопустимую дату ...

В приведенном выше , время моего события и обновленные запросы разрешаются как числа, указанные ниже, через esriFieldTypeDate .. Я хочу преобразовать их в удобочитаемый формат.

Обновлено: 1593543128000 <----- ---------------- </p>

Время события: 1593021559000 <----------------- ----------- </p>

Еще одна попытка ниже, что бы я ни делал, я получаю неверную дату или NaN ошибки.

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

Обновление :: если я JSON проанализирую свое значение dCn var выше .. оно действительно работает .. отображает отформатированную дату правильно, однако выдает ошибку JSON в консоль. Как я могу решить эту проблему?

Uncaught SyntaxError: Неожиданный токен M в JSON в позиции 0

1 Ответ

1 голос
/ 16 июля 2020

У вас не должно возникнуть проблем с использованием любого метода Date JavaScript с этими значениями. Число, которое вы получаете, представляет собой число даты, метку времени, представляет собой миллисекунды с 1 января 1970 г. UT C.

Взгляните на этот пример, который я сделал для вас, чтобы проиллюстрировать это.

<!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>
...