将 '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>
......
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>