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()


扫一扫 手机查看

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注