转换日期JavaScript
我目前正在用soap web服务中的数据填充一个表,日期以字符串形式出现(示例44250)。我创建了一个函数,将其格式化为yyyy/mm/dd格式 在循环之外,我有以下功能:转换日期JavaScript,javascript,date,soap,Javascript,Date,Soap,我目前正在用soap web服务中的数据填充一个表,日期以字符串形式出现(示例44250)。我创建了一个函数,将其格式化为yyyy/mm/dd格式 在循环之外,我有以下功能: Date.prototype.addDays = function (days) { var date = new Date(this.valueOf()); date.setDate(date.getDate() + days); return date;
Date.prototype.addDays = function (days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};
在循环中,我有:
else if (detailsItem == details[i].children[1].innerHTML) {
const dbDays = days[i].innerHTML;
const daysInt = parseInt(dbDays, 0);
const newDate = firstDate.addDays(daysInt);
// Format the date to a readable value
const partsDate = {
date: newDate.getDate(),
month: newDate.getMonth() + 1,
year: newDate.getYear() + 1900,
};
finalDate = `${partsDate.date}/${partsDate.month}/${partsDate.year}`;
const td = document.createElement("td");
td.textContent = finalDate;
tr.appendChild(td);
}
elseif只是在填充表时检查何时将日期添加到表中
我现在需要再次使用日期向服务发送请求,但使用以前的格式,但日期必须与按钮单击位于同一行,服务只接受日期的字符串格式,我目前无法确定如何重新格式化
这是按钮点击功能,然后必须将日期格式化为44250等格式
btn.onclick = function () {
// Loops through the table to find the slot and date when clicking the button on the same row
var tableRow = document.getElementById("booking-table"),
rIndex;
for (var i = 0; i < tableRow.rows.length; i++) {
tableRow.rows[i].onclick = function () {
rIndex = this.rowIndex;
bookingDay = this.cells[1].innerHTML;
bookingSlot = this.cells[2].innerHTML;
console.log(bookingSlot, bookingDay);
};
}
btn.onclick=函数(){
//单击同一行上的按钮时,在表格中循环查找插槽和日期
var tableRow=document.getElementById(“预订表”),
rIndex;
对于(变量i=0;i
任何关于如何完成此任务的帮助都将不胜感激。您可以使用momentjs更轻松地转换日期:, 关于将该值传递给html后日期的使用,能否将该值存储在某个全局变量sesion或localstorage上?然后稍后再使用它?再次调用soap服务?我正在计算您在网页上的工作,因为您正在使用html:)值“44250”看起来像是自1899年12月31日(纪元)以来的天数,这意味着值“1”将转换为1900年1月1日。如果这是正确的,您可以使用以下方法从中创建日期:
let dbDays = '44250';
let date = new Date(1900, 0, dbDays); // 24 Feb 2021
在这个算法中,1是1900年1月1日,0是1899年12月31日
可以使用反向算法将其转换回历元偏移:
let dbDays = Math.round((date.getTime() - new Date(1899, 11, 31) / 8.64e7);
它得到日期和纪元之间的毫秒差,然后在一天内除以毫秒,并对其进行四舍五入,以说明白天不完全是24小时长的情况下可能产生的日光节约效果。这种方法只适用于整天,不适用于部分天
如果1900年1月1日应该是0而不是1,则该算法可能需要一天,只需调整函数中使用的基准日期即可
从dbDate到Date实例再到Date实例的简单函数有:
//将历元日期转换为日期
函数toDate(dbDays){
返回新日期(1900,0,+dbDays);
}
//将日期转换为纪元日
今日(日期)的功能{
返回数学圆((日期-新日期(1899,11,31))/8.64e7);
}
//将日期格式化为dd/mm/yyyy
函数格式化日期(d){
设z=n=>('0'+n).slice(-2);
返回z(d.getDate())+'/'+z(d.getMonth()+1)+'/'+d.getFullYear();
}
//以d/m/y格式解析日期,任何非数字分隔符
函数解析日期(个){
设[d,m,y]=s.split(/\d/);
返回新日期(y,m-1,d)
}
//范例
设dbDays='44250';
设d1=toDate(dbDays);//2021年2月24日
设ts=formattate(d1);//24/02/2021
设d2=parseDate(ts);//日期对象
console.log(dbDays+'到目前为止:'+ts);
console.log(ts+'到dbDays:'+今天(d2))
将数据层和表示层分开可能是一个好主意。在解析web服务中的数据时,以原始格式存储日期,并且仅使用转换后的可读格式进行表示。这绝对是一个好主意,我们将对此进行研究,非常感谢您提供的提示!这不是答案,可能是这是一个有用的评论。你说得对,我是新来的,对此很抱歉,只是学习如何使用这个Awosome网站!:)非常感谢你的详细解释,感谢你花时间浏览这么多东西,我感谢所有的帮助!