JS获取时间差到UNIX时间戳或时间戳日期
JS get time difference to UNIX timestamp or the timestamps date
我有一些内部带有 UNIX 时间戳的元素,这对客户端没有用。所以我把它们变成
不到一分钟前="just now"
不到一小时前="X minutes ago"
不到一天前="X hours ago"
其他:"timestamp->real date".
首先我的代码可以工作,但是不能在移动设备上运行,例如 iPhone5s。这些设备的结果将是:NaN NaN NaN NaN。我很想知道如何解决这个问题。
另一件事是,我认为我的 javascript 看起来很愚蠢。但我无法弄清楚如何遍历这些不同的时间条件。这里的建议不是必须的,但感激不尽。
注意:在页面加载之前,我无法更改段落的结构。设置我的段落将包含 UNIX 时间戳。那是我的起始位置。
这是我的完整 html,包含大量 < p > 示例,复制和粘贴准备就绪:
<!DOCTYPE html>
<html>
<head>
<script>
function startTime() {
var dates = document.getElementsByClassName('date');
for (var i = 0; i < dates.length; i++) {
var currentdate = Date.now();
if (dates[i].innerHTML !== '') {
var date = new Date(dates[i].innerHTML*1000);
if (currentdate - 60000 <= date) {dates[i].innerHTML = "just now"}
else if (currentdate - 120000 <= date) {dates[i].innerHTML = "1 min ago"}
else if (currentdate - 180000 <= date) {dates[i].innerHTML = "2 mins ago"}
else if (currentdate - 240000 <= date) {dates[i].innerHTML = "3 mins ago"}
else if (currentdate - 300000 <= date) {dates[i].innerHTML = "4 mins ago"}
else if (currentdate - 360000 <= date) {dates[i].innerHTML = "5 mins ago"}
else if (currentdate - 420000 <= date) {dates[i].innerHTML = "6 mins ago"}
else if (currentdate - 480000 <= date) {dates[i].innerHTML = "7 mins ago"}
else if (currentdate - 540000 <= date) {dates[i].innerHTML = "8 mins ago"}
else if (currentdate - 600000 <= date) {dates[i].innerHTML = "9 mins ago"}
else if (currentdate - 660000 <= date) {dates[i].innerHTML = "10 mins ago"}
else if (currentdate - 720000 <= date) {dates[i].innerHTML = "11 mins ago"}
else if (currentdate - 780000 <= date) {dates[i].innerHTML = "12 mins ago"}
else if (currentdate - 840000 <= date) {dates[i].innerHTML = "13 mins ago"}
else if (currentdate - 900000 <= date) {dates[i].innerHTML = "14 mins ago"}
else if (currentdate - 960000 <= date) {dates[i].innerHTML = "15 mins ago"}
else if (currentdate - 1020000 <= date) {dates[i].innerHTML = "16 mins ago"}
else if (currentdate - 1080000 <= date) {dates[i].innerHTML = "17 mins ago"}
else if (currentdate - 1140000 <= date) {dates[i].innerHTML = "18 mins ago"}
else if (currentdate - 1200000 <= date) {dates[i].innerHTML = "19 mins ago"}
else if (currentdate - 1260000 <= date) {dates[i].innerHTML = "20 mins ago"}
else if (currentdate - 1320000 <= date) {dates[i].innerHTML = "21 mins ago"}
else if (currentdate - 1380000 <= date) {dates[i].innerHTML = "22 mins ago"}
else if (currentdate - 1440000 <= date) {dates[i].innerHTML = "23 mins ago"}
else if (currentdate - 1500000 <= date) {dates[i].innerHTML = "24 mins ago"}
else if (currentdate - 1560000 <= date) {dates[i].innerHTML = "25 mins ago"}
else if (currentdate - 1620000 <= date) {dates[i].innerHTML = "26 mins ago"}
else if (currentdate - 1680000 <= date) {dates[i].innerHTML = "27 mins ago"}
else if (currentdate - 1740000 <= date) {dates[i].innerHTML = "28 mins ago"}
else if (currentdate - 1800000 <= date) {dates[i].innerHTML = "29 mins ago"}
else if (currentdate - 1860000 <= date) {dates[i].innerHTML = "30 mins ago"}
else if (currentdate - 1920000 <= date) {dates[i].innerHTML = "31 mins ago"}
else if (currentdate - 1980000 <= date) {dates[i].innerHTML = "32 mins ago"}
else if (currentdate - 2040000 <= date) {dates[i].innerHTML = "33 mins ago"}
else if (currentdate - 2100000 <= date) {dates[i].innerHTML = "34 mins ago"}
else if (currentdate - 2160000 <= date) {dates[i].innerHTML = "35 mins ago"}
else if (currentdate - 2220000 <= date) {dates[i].innerHTML = "36 mins ago"}
else if (currentdate - 2280000 <= date) {dates[i].innerHTML = "37 mins ago"}
else if (currentdate - 2340000 <= date) {dates[i].innerHTML = "38 mins ago"}
else if (currentdate - 2400000 <= date) {dates[i].innerHTML = "39 mins ago"}
else if (currentdate - 2460000 <= date) {dates[i].innerHTML = "40 mins ago"}
else if (currentdate - 2520000 <= date) {dates[i].innerHTML = "41 mins ago"}
else if (currentdate - 2580000 <= date) {dates[i].innerHTML = "42 mins ago"}
else if (currentdate - 2640000 <= date) {dates[i].innerHTML = "43 mins ago"}
else if (currentdate - 2700000 <= date) {dates[i].innerHTML = "44 mins ago"}
else if (currentdate - 2760000 <= date) {dates[i].innerHTML = "45 mins ago"}
else if (currentdate - 2820000 <= date) {dates[i].innerHTML = "46 mins ago"}
else if (currentdate - 2880000 <= date) {dates[i].innerHTML = "47 mins ago"}
else if (currentdate - 2940000 <= date) {dates[i].innerHTML = "48 mins ago"}
else if (currentdate - 3000000 <= date) {dates[i].innerHTML = "49 mins ago"}
else if (currentdate - 3060000 <= date) {dates[i].innerHTML = "50 mins ago"}
else if (currentdate - 3120000 <= date) {dates[i].innerHTML = "51 mins ago"}
else if (currentdate - 3180000 <= date) {dates[i].innerHTML = "52 mins ago"}
else if (currentdate - 3240000 <= date) {dates[i].innerHTML = "53 mins ago"}
else if (currentdate - 3300000 <= date) {dates[i].innerHTML = "54 mins ago"}
else if (currentdate - 3360000 <= date) {dates[i].innerHTML = "55 mins ago"}
else if (currentdate - 3420000 <= date) {dates[i].innerHTML = "56 mins ago"}
else if (currentdate - 3480000 <= date) {dates[i].innerHTML = "57 mins ago"}
else if (currentdate - 3540000 <= date) {dates[i].innerHTML = "58 mins ago"}
else if (currentdate - 3600000 <= date) {dates[i].innerHTML = "59 mins ago"}
else if (currentdate - 7320000 <= date) {dates[i].innerHTML = "1 hr ago"}
else if (currentdate - 10980000 <= date) {dates[i].innerHTML = "2 hrs ago"}
else if (currentdate - 14640000 <= date) {dates[i].innerHTML = "3 hrs ago"}
else if (currentdate - 18300000 <= date) {dates[i].innerHTML = "4 hrs ago"}
else if (currentdate - 21960000 <= date) {dates[i].innerHTML = "5 hrs ago"}
else if (currentdate - 25620000 <= date) {dates[i].innerHTML = "6 hrs ago"}
else if (currentdate - 29280000 <= date) {dates[i].innerHTML = "7 hrs ago"}
else if (currentdate - 32940000 <= date) {dates[i].innerHTML = "8 hrs ago"}
else if (currentdate - 36600000 <= date) {dates[i].innerHTML = "9 hrs ago"}
else if (currentdate - 40260000 <= date) {dates[i].innerHTML = "10 hrs ago"}
else if (currentdate - 43920000 <= date) {dates[i].innerHTML = "11 hrs ago"}
else if (currentdate - 47580000 <= date) {dates[i].innerHTML = "12 hrs ago"}
else if (currentdate - 51240000 <= date) {dates[i].innerHTML = "13 hrs ago"}
else if (currentdate - 54900000 <= date) {dates[i].innerHTML = "14 hrs ago"}
else if (currentdate - 58560000 <= date) {dates[i].innerHTML = "15 hrs ago"}
else if (currentdate - 62220000 <= date) {dates[i].innerHTML = "16 hrs ago"}
else if (currentdate - 65880000 <= date) {dates[i].innerHTML = "17 hrs ago"}
else if (currentdate - 69540000 <= date) {dates[i].innerHTML = "18 hrs ago"}
else if (currentdate - 73200000 <= date) {dates[i].innerHTML = "19 hrs ago"}
else if (currentdate - 76860000 <= date) {dates[i].innerHTML = "20 hrs ago"}
else if (currentdate - 80520000 <= date) {dates[i].innerHTML = "21 hrs ago"}
else if (currentdate - 84180000 <= date) {dates[i].innerHTML = "22 hrs ago"}
else if (currentdate - 87840000 <= date) {dates[i].innerHTML = "23 hrs ago"}
else {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var formattedTime = day + "." + month + "." + year;
dates[i].innerHTML = formattedTime;
}
}
}
}
</script>
</head>
<body onload="startTime();">
<p class="date">1483015785</p>
<p class="date">1483015786</p>
<p class="date">1483015794</p>
<p class="date">1483015984</p>
<p class="date">1483019784</p>
<p class="date">1483095784</p>
<p class="date">1489915784</p>
<p class="date">1483015927</p>
<p class="date">1483015918</p>
<p class="date">1483015917</p>
<p class="date">1483015728</p>
<p class="date">1483013928</p>
<p class="date">1483012928</p>
<p class="date">1483011928</p>
<p class="date">1483010928</p>
<p class="date">1483011428</p>
<p class="date">1483031228</p>
<p class="date">712619600</p>
<p class="date">716165789</p>
<p class="date">451616960</p>
<p class="date">567845845</p>
<p class="date">767856785</p>
<p class="date">867985764</p>
</body>
</html>
更新:
我做了更多研究,结果发现 问题的发生是因为移动版 Safari 会自动将某些数字转换为链接!
示例:
<p>1484234234234</p>
automatically becomes
<p><a href="tel:1484234234234">1484234234234</a></p>
至少这就是我的代码无法正常工作的原因。奇怪的是,并不是所有的数字都会被转换,你可以用这段代码发现:
<!DOCTYPE html>
<html>
<head>
<script>
function startTime() {
var dates = document.getElementsByClassName('date');
for (var i = 0; i < dates.length; i++) {
if (dates[i].innerHTML !== '') {
var date = dates[i].innerHTML;
alert(date);
}}}
</script>
</head>
<body onload="startTime();">
<!--first two will be converted-->
<p class="date">1483015785</p>
<p class="date">1483015786</p>
<!--these two won't-->
<p class="date">712619600</p>
<p class="date">716165789</p>
</body>
</html>
目前我找不到解决此问题的方法。将
更改为其他内容( f.e。)没有帮助。
通过将此行添加到我的 html 的头部,将阻止转换:
<meta name="format-detection" content="telephone=no" />
可能的问题:该行解决了我文档中的所有数字
这意味着如果我想让电话号码在点击时可呼叫,我需要自己突出显示它们。
我也不知道这行还有什么效果。
我有一些内部带有 UNIX 时间戳的元素,这对客户端没有用。所以我把它们变成
不到一分钟前="just now"
不到一小时前="X minutes ago"
不到一天前="X hours ago"
其他:"timestamp->real date".
首先我的代码可以工作,但是不能在移动设备上运行,例如 iPhone5s。这些设备的结果将是:NaN NaN NaN NaN。我很想知道如何解决这个问题。
另一件事是,我认为我的 javascript 看起来很愚蠢。但我无法弄清楚如何遍历这些不同的时间条件。这里的建议不是必须的,但感激不尽。
注意:在页面加载之前,我无法更改段落的结构。设置我的段落将包含 UNIX 时间戳。那是我的起始位置。
这是我的完整 html,包含大量 < p > 示例,复制和粘贴准备就绪:
<!DOCTYPE html>
<html>
<head>
<script>
function startTime() {
var dates = document.getElementsByClassName('date');
for (var i = 0; i < dates.length; i++) {
var currentdate = Date.now();
if (dates[i].innerHTML !== '') {
var date = new Date(dates[i].innerHTML*1000);
if (currentdate - 60000 <= date) {dates[i].innerHTML = "just now"}
else if (currentdate - 120000 <= date) {dates[i].innerHTML = "1 min ago"}
else if (currentdate - 180000 <= date) {dates[i].innerHTML = "2 mins ago"}
else if (currentdate - 240000 <= date) {dates[i].innerHTML = "3 mins ago"}
else if (currentdate - 300000 <= date) {dates[i].innerHTML = "4 mins ago"}
else if (currentdate - 360000 <= date) {dates[i].innerHTML = "5 mins ago"}
else if (currentdate - 420000 <= date) {dates[i].innerHTML = "6 mins ago"}
else if (currentdate - 480000 <= date) {dates[i].innerHTML = "7 mins ago"}
else if (currentdate - 540000 <= date) {dates[i].innerHTML = "8 mins ago"}
else if (currentdate - 600000 <= date) {dates[i].innerHTML = "9 mins ago"}
else if (currentdate - 660000 <= date) {dates[i].innerHTML = "10 mins ago"}
else if (currentdate - 720000 <= date) {dates[i].innerHTML = "11 mins ago"}
else if (currentdate - 780000 <= date) {dates[i].innerHTML = "12 mins ago"}
else if (currentdate - 840000 <= date) {dates[i].innerHTML = "13 mins ago"}
else if (currentdate - 900000 <= date) {dates[i].innerHTML = "14 mins ago"}
else if (currentdate - 960000 <= date) {dates[i].innerHTML = "15 mins ago"}
else if (currentdate - 1020000 <= date) {dates[i].innerHTML = "16 mins ago"}
else if (currentdate - 1080000 <= date) {dates[i].innerHTML = "17 mins ago"}
else if (currentdate - 1140000 <= date) {dates[i].innerHTML = "18 mins ago"}
else if (currentdate - 1200000 <= date) {dates[i].innerHTML = "19 mins ago"}
else if (currentdate - 1260000 <= date) {dates[i].innerHTML = "20 mins ago"}
else if (currentdate - 1320000 <= date) {dates[i].innerHTML = "21 mins ago"}
else if (currentdate - 1380000 <= date) {dates[i].innerHTML = "22 mins ago"}
else if (currentdate - 1440000 <= date) {dates[i].innerHTML = "23 mins ago"}
else if (currentdate - 1500000 <= date) {dates[i].innerHTML = "24 mins ago"}
else if (currentdate - 1560000 <= date) {dates[i].innerHTML = "25 mins ago"}
else if (currentdate - 1620000 <= date) {dates[i].innerHTML = "26 mins ago"}
else if (currentdate - 1680000 <= date) {dates[i].innerHTML = "27 mins ago"}
else if (currentdate - 1740000 <= date) {dates[i].innerHTML = "28 mins ago"}
else if (currentdate - 1800000 <= date) {dates[i].innerHTML = "29 mins ago"}
else if (currentdate - 1860000 <= date) {dates[i].innerHTML = "30 mins ago"}
else if (currentdate - 1920000 <= date) {dates[i].innerHTML = "31 mins ago"}
else if (currentdate - 1980000 <= date) {dates[i].innerHTML = "32 mins ago"}
else if (currentdate - 2040000 <= date) {dates[i].innerHTML = "33 mins ago"}
else if (currentdate - 2100000 <= date) {dates[i].innerHTML = "34 mins ago"}
else if (currentdate - 2160000 <= date) {dates[i].innerHTML = "35 mins ago"}
else if (currentdate - 2220000 <= date) {dates[i].innerHTML = "36 mins ago"}
else if (currentdate - 2280000 <= date) {dates[i].innerHTML = "37 mins ago"}
else if (currentdate - 2340000 <= date) {dates[i].innerHTML = "38 mins ago"}
else if (currentdate - 2400000 <= date) {dates[i].innerHTML = "39 mins ago"}
else if (currentdate - 2460000 <= date) {dates[i].innerHTML = "40 mins ago"}
else if (currentdate - 2520000 <= date) {dates[i].innerHTML = "41 mins ago"}
else if (currentdate - 2580000 <= date) {dates[i].innerHTML = "42 mins ago"}
else if (currentdate - 2640000 <= date) {dates[i].innerHTML = "43 mins ago"}
else if (currentdate - 2700000 <= date) {dates[i].innerHTML = "44 mins ago"}
else if (currentdate - 2760000 <= date) {dates[i].innerHTML = "45 mins ago"}
else if (currentdate - 2820000 <= date) {dates[i].innerHTML = "46 mins ago"}
else if (currentdate - 2880000 <= date) {dates[i].innerHTML = "47 mins ago"}
else if (currentdate - 2940000 <= date) {dates[i].innerHTML = "48 mins ago"}
else if (currentdate - 3000000 <= date) {dates[i].innerHTML = "49 mins ago"}
else if (currentdate - 3060000 <= date) {dates[i].innerHTML = "50 mins ago"}
else if (currentdate - 3120000 <= date) {dates[i].innerHTML = "51 mins ago"}
else if (currentdate - 3180000 <= date) {dates[i].innerHTML = "52 mins ago"}
else if (currentdate - 3240000 <= date) {dates[i].innerHTML = "53 mins ago"}
else if (currentdate - 3300000 <= date) {dates[i].innerHTML = "54 mins ago"}
else if (currentdate - 3360000 <= date) {dates[i].innerHTML = "55 mins ago"}
else if (currentdate - 3420000 <= date) {dates[i].innerHTML = "56 mins ago"}
else if (currentdate - 3480000 <= date) {dates[i].innerHTML = "57 mins ago"}
else if (currentdate - 3540000 <= date) {dates[i].innerHTML = "58 mins ago"}
else if (currentdate - 3600000 <= date) {dates[i].innerHTML = "59 mins ago"}
else if (currentdate - 7320000 <= date) {dates[i].innerHTML = "1 hr ago"}
else if (currentdate - 10980000 <= date) {dates[i].innerHTML = "2 hrs ago"}
else if (currentdate - 14640000 <= date) {dates[i].innerHTML = "3 hrs ago"}
else if (currentdate - 18300000 <= date) {dates[i].innerHTML = "4 hrs ago"}
else if (currentdate - 21960000 <= date) {dates[i].innerHTML = "5 hrs ago"}
else if (currentdate - 25620000 <= date) {dates[i].innerHTML = "6 hrs ago"}
else if (currentdate - 29280000 <= date) {dates[i].innerHTML = "7 hrs ago"}
else if (currentdate - 32940000 <= date) {dates[i].innerHTML = "8 hrs ago"}
else if (currentdate - 36600000 <= date) {dates[i].innerHTML = "9 hrs ago"}
else if (currentdate - 40260000 <= date) {dates[i].innerHTML = "10 hrs ago"}
else if (currentdate - 43920000 <= date) {dates[i].innerHTML = "11 hrs ago"}
else if (currentdate - 47580000 <= date) {dates[i].innerHTML = "12 hrs ago"}
else if (currentdate - 51240000 <= date) {dates[i].innerHTML = "13 hrs ago"}
else if (currentdate - 54900000 <= date) {dates[i].innerHTML = "14 hrs ago"}
else if (currentdate - 58560000 <= date) {dates[i].innerHTML = "15 hrs ago"}
else if (currentdate - 62220000 <= date) {dates[i].innerHTML = "16 hrs ago"}
else if (currentdate - 65880000 <= date) {dates[i].innerHTML = "17 hrs ago"}
else if (currentdate - 69540000 <= date) {dates[i].innerHTML = "18 hrs ago"}
else if (currentdate - 73200000 <= date) {dates[i].innerHTML = "19 hrs ago"}
else if (currentdate - 76860000 <= date) {dates[i].innerHTML = "20 hrs ago"}
else if (currentdate - 80520000 <= date) {dates[i].innerHTML = "21 hrs ago"}
else if (currentdate - 84180000 <= date) {dates[i].innerHTML = "22 hrs ago"}
else if (currentdate - 87840000 <= date) {dates[i].innerHTML = "23 hrs ago"}
else {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var formattedTime = day + "." + month + "." + year;
dates[i].innerHTML = formattedTime;
}
}
}
}
</script>
</head>
<body onload="startTime();">
<p class="date">1483015785</p>
<p class="date">1483015786</p>
<p class="date">1483015794</p>
<p class="date">1483015984</p>
<p class="date">1483019784</p>
<p class="date">1483095784</p>
<p class="date">1489915784</p>
<p class="date">1483015927</p>
<p class="date">1483015918</p>
<p class="date">1483015917</p>
<p class="date">1483015728</p>
<p class="date">1483013928</p>
<p class="date">1483012928</p>
<p class="date">1483011928</p>
<p class="date">1483010928</p>
<p class="date">1483011428</p>
<p class="date">1483031228</p>
<p class="date">712619600</p>
<p class="date">716165789</p>
<p class="date">451616960</p>
<p class="date">567845845</p>
<p class="date">767856785</p>
<p class="date">867985764</p>
</body>
</html>
更新:
我做了更多研究,结果发现 问题的发生是因为移动版 Safari 会自动将某些数字转换为链接!
示例:
<p>1484234234234</p>
automatically becomes
<p><a href="tel:1484234234234">1484234234234</a></p>
至少这就是我的代码无法正常工作的原因。奇怪的是,并不是所有的数字都会被转换,你可以用这段代码发现:
<!DOCTYPE html>
<html>
<head>
<script>
function startTime() {
var dates = document.getElementsByClassName('date');
for (var i = 0; i < dates.length; i++) {
if (dates[i].innerHTML !== '') {
var date = dates[i].innerHTML;
alert(date);
}}}
</script>
</head>
<body onload="startTime();">
<!--first two will be converted-->
<p class="date">1483015785</p>
<p class="date">1483015786</p>
<!--these two won't-->
<p class="date">712619600</p>
<p class="date">716165789</p>
</body>
</html>
目前我找不到解决此问题的方法。将
更改为其他内容(
通过将此行添加到我的 html 的头部,将阻止转换:
<meta name="format-detection" content="telephone=no" />
可能的问题:该行解决了我文档中的所有数字
这意味着如果我想让电话号码在点击时可呼叫,我需要自己突出显示它们。
我也不知道这行还有什么效果。