function testDate(){
Console.clear()
var a = new Date()
Console.log(a)//2022/4/24 14:50:35//实际是23点了,每次运行会变
//Sun Apr 24 2022 22:51:47 GMT+0800 (中国标准时间)
Console.log(a.getTime())//1650812045217//每次运行会变
var b =new Date()
Console.log(b.setTime(1650812045217))//1650812045217,浏览器同
Console.log(b)//2022/4/24 14:54:05
Console.log(b.setTime("1650812045217"))//1650812045217,浏览器同
Console.log(b)//2022/4/24 14:54:05,说明参数可以是数字或者字符串
//1970-1-1是?
var a =new Date("1970-1-1")
Console.log(a.getTime())//-28800000
//那么0毫秒是谁
a.setTime(0)
Console.log(a)//1970/1/1
var e = new Date("1970/1/1")
Console.log(e)//1969/12/31 16:00:00//浏览器Thu Jan 01 1970 00:00:00 GMT+0800 (中国标准时间)
Console.log(e.getTime())//-28800000 //与浏览器同
Console.log(e.setTime(-28800001))//-28800001 //与浏览器同
Console.log(e)//1969/12/31 15:59:59 //与浏览器同
//那么我们怎么办?
//1970/1/1对应25569
//1900/1/1对应1
//那么我们就以1970-1-1作为起点转换excel表格的日期,
//2021/12/1对应44531
//第一步44531-25569=18962
//间隔数字就是天数,换算成毫秒=18962*1000*60*60*24=1638316800000
var a = new Date()
a.setTime(1638316800000)
Console.log(a)//2021/12/1--//浏览器:Wed Dec 01 2021 08:00:00 GMT+0800 (中国标准时间)
var a = new Date()
a.setTime(1638316800100)
Console.log(a)//2021/12/1--//浏览器:Wed Dec 01 2021 08:00:00 GMT+0800 (中国标准时间)
var a = new Date()
a.setTime(1638316801000)
Console.log(a)//2021/12/1 0:00:01--//浏览器:Wed Dec 01 2021 08:00:01 GMT+0800 (中国标准时间)
//可知,如果是午夜整点,就省略了时分秒。这里多了1000毫秒,所以就不是整点。显示了时分秒。毫秒不足1000不算数。
//我的程序就是
var getExelDate = 44532//获取到的单元格的日期,是数字格式
var a = new Date()
var ms = (getExelDate - 25569)*1000*60*60*24
a.setTime(ms)//改变了a的值,返回值是ms参数的值,不是日期,不是a。挺奇怪的。
Console.log(a)//2021/12/2
}
//宏里面的代码片段
Console.log("第"+j+"列,未转日期的cellValue:"+cellValue+"。")
var a = new Date()
var ms = (cellValue - 25569)*1000*60*60*24
a.setTime(ms)//改变了a的值,返回值是ms参数的值,不是日期,不是a。挺奇怪的。
Console.log(a)
Console.log("tostring后的值:"+a.toString())
cellValue =a
//上面在sqlstr中发现个问题,Console.log(a)是显示2021/12/2,但是sqlstr中组合成字符串就变成“Thu Mar 01 1900 08:05:43 GMT+0805 (中国标准时间)”,我在a后面直接a.toString()再打印,就是变成这样的一串。
第8列,未转日期的cellValue:61。
1900/3/1
tostring后的值:Thu Mar 01 1900 08:05:43 GMT+0805 (中国标准时间)
第13列,未转日期的cellValue:44518。
2021/11/18
tostring后的值:Thu Nov 18 2021 08:00:00 GMT+0800 (中国标准时间)
第14列,未转日期的cellValue:44519。
2021/11/19
tostring后的值:Fri Nov 19 2021 08:00:00 GMT+0800 (中国标准时间)
第16列,未转日期的cellValue:44548。
2021/12/18
tostring后的值:Sat Dec 18 2021 08:00:00 GMT+0800 (中国标准时间)
INSERT INTO nego (buyer,maid,typestr,color,unit,quantity,outdate,stock,notes,saleorderid,workid,orderdate,hopedate,hurry,plandate,plandate2,planquantity,acceptdate,notes2,mabcakdatechange,mabackdate,keymastate,bomdate,bomgetdate,notes3,finishdate,finishquantity,exeplan,worksheetrow) VALUES ("支","90","0550*180*120mm","黑色","个","100","Thu Mar 01 1900 08:05:43 GMT+0805 (中国标准时间)","","","","WORK0000","Thu Nov 18 2021 08:00:00 GMT+0800 (中国标准时间)","Fri Nov 19 2021 08:00:00 GMT+0800 (中国标准时间)","","Sat Dec 18 2021 08:00:00 GMT+0800 (中国标准时间)","","100","","","","预计12/15","欠走","44520","","","","","","31")
对了还有个问题,excel里面1900年当做闰年,2月有29天,也就是说,如果excel如果是1900-1-2,数字值是2,上面的转换程序会转成1900-1-1。其他的程序应该也是如此。参考【CSDN-SmartManWind-EXCEL日期时间格式读取为数字问题】
//增加了月和日小于10,加0,写入数据库,然后数据库读出来放到网页的input(date类型)只接受“2022-02-02”这样的格式。
Console.log("第"+j+"列,未转日期的cellValue:"+cellValue+"。")
var a = new Date()
var ms = (cellValue - 25569)*1000*60*60*24
a.setTime(ms)//改变了a的值,返回值是ms参数的值,不是日期,不是a。挺奇怪的。
var monthstr,daystr
if(a.getMonth()