Javascript 解析 mysql 时间戳时出现输出问题
Javascript output issue when parsing mysql timestamp
我正在尝试根据 mysql 时间戳显示剩余时间。由于某种原因,输出为 -1 天 23 小时 59 分 59 秒。
<script type="text/javascript">
function update(datetime = "2021-07-15 20:24:42") {
timeleft = new Date(datetime);
now = new Date();
secs = (timeleft - now) / 1000;
days = Math.floor(secs / (3600 * 24));
hours = Math.floor((secs - (days * (3600 * 24)))/3600);
minutes = Math.floor((secs - (days * (3600 * 24)) - (hours * 3600)) / 60);
seconds = Math.floor(secs - (days * (3600 * 24)) - (hours * 3600) - (minutes * 60));
if (seconds < 0) {
days = 0;
hours = 0;
minutes = 0;
seconds = 0;
}
return days+' days, '+ hours+' hours, '+minutes+' minutes, '+seconds+' seconds';
}
// time is pulled from database, but plugged in manually
member = Date("06-08-21 16:06:37");
alert("Left: "+update(member));
</script>
任何信息将不胜感激
1) 您可以使用 new Date()
创建新实例并传递有效日期。
2) 您正在使用 dd-mm-yy
格式,因此您应该使其有效,因为如果您直接传递它,它将转换日期
member = new Date(dateString); // 2021-06-08T10:36:37.000Z
即日期为 08
,月份 = 06
,因此您必须在从 new Date()
获取日期实例之前交换日期和月份值
const dateString = "06-08-21 16:06:37".replace(
/(\d\d)-(\d\d)-(\d\d \d\d:\d\d:\d\d)/,
`--`
);
function update(datetime = "2021-07-15 20:24:42") {
timeleft = new Date(datetime);
now = new Date();
secs = (timeleft - now) / 1000;
days = Math.floor(secs / (3600 * 24));
hours = Math.floor((secs - days * (3600 * 24)) / 3600);
minutes = Math.floor((secs - days * (3600 * 24) - hours * 3600) / 60);
seconds = Math.floor(secs - days * (3600 * 24) - hours * 3600 - minutes * 60);
if (seconds < 0) {
days = 0;
hours = 0;
minutes = 0;
seconds = 0;
}
return (
days +
" days, " +
hours +
" hours, " +
minutes +
" minutes, " +
seconds +
" seconds"
);
}
// time is pulled from database, but plugged in manually
const dateString = "06-08-21 16:06:37".replace(
/(\d\d)-(\d\d)-(\d\d \d\d:\d\d:\d\d)/,
`--`
);
member = new Date(dateString);
console.log("Left: " + update(member));
我正在尝试根据 mysql 时间戳显示剩余时间。由于某种原因,输出为 -1 天 23 小时 59 分 59 秒。
<script type="text/javascript">
function update(datetime = "2021-07-15 20:24:42") {
timeleft = new Date(datetime);
now = new Date();
secs = (timeleft - now) / 1000;
days = Math.floor(secs / (3600 * 24));
hours = Math.floor((secs - (days * (3600 * 24)))/3600);
minutes = Math.floor((secs - (days * (3600 * 24)) - (hours * 3600)) / 60);
seconds = Math.floor(secs - (days * (3600 * 24)) - (hours * 3600) - (minutes * 60));
if (seconds < 0) {
days = 0;
hours = 0;
minutes = 0;
seconds = 0;
}
return days+' days, '+ hours+' hours, '+minutes+' minutes, '+seconds+' seconds';
}
// time is pulled from database, but plugged in manually
member = Date("06-08-21 16:06:37");
alert("Left: "+update(member));
</script>
任何信息将不胜感激
1) 您可以使用 new Date()
创建新实例并传递有效日期。
2) 您正在使用 dd-mm-yy
格式,因此您应该使其有效,因为如果您直接传递它,它将转换日期
member = new Date(dateString); // 2021-06-08T10:36:37.000Z
即日期为 08
,月份 = 06
,因此您必须在从 new Date()
const dateString = "06-08-21 16:06:37".replace(
/(\d\d)-(\d\d)-(\d\d \d\d:\d\d:\d\d)/,
`--`
);
function update(datetime = "2021-07-15 20:24:42") {
timeleft = new Date(datetime);
now = new Date();
secs = (timeleft - now) / 1000;
days = Math.floor(secs / (3600 * 24));
hours = Math.floor((secs - days * (3600 * 24)) / 3600);
minutes = Math.floor((secs - days * (3600 * 24) - hours * 3600) / 60);
seconds = Math.floor(secs - days * (3600 * 24) - hours * 3600 - minutes * 60);
if (seconds < 0) {
days = 0;
hours = 0;
minutes = 0;
seconds = 0;
}
return (
days +
" days, " +
hours +
" hours, " +
minutes +
" minutes, " +
seconds +
" seconds"
);
}
// time is pulled from database, but plugged in manually
const dateString = "06-08-21 16:06:37".replace(
/(\d\d)-(\d\d)-(\d\d \d\d:\d\d:\d\d)/,
`--`
);
member = new Date(dateString);
console.log("Left: " + update(member));