格式化WSH中的日期类型(以及与日期项目的差异)

Format Date type in WSH (and difference with date oject)

本文关键字:日期 项目 WSH 类型 格式化      更新时间:2023-11-02

我正在尝试使用Javascript语法在WSH中进行一些简单的文件比较。我使用的是windows XP SP3,脚本是通过Cscript.exe 运行的

我的问题来自File对象的dateLastModified属性,该属性不处理常见的日期操作函数,如getDay()或getFullYear()

Microsoft Javascript似乎有两种类型的日期这是一个代码示例:

var fso = WSH.CreateObject("Scripting.FileSystemObject")
f = fso.getFile('C:''WINDOWS''notepad.exe')
WSH.echo(f.Name)
WSH.echo(f.dateLastModified +" |type = "+ typeof(f.dateLastModified))

var d = new Date()
WSH.echo(d +" |type = "+ typeof(d))

这是的输出

Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
notepad.exe
Sun Apr 13 19:34:16 UTC+0200 2008 |type = date
Tue Jul 17 14:28:08 UTC+0200 2012 |type = object

当然,如果我尝试:

WSH.echo( f.dateLastModified.getFullYear() )

我收到一个错误,告诉f.dateLastModified不是对象

所以,我知道如何操作经典的Date对象,但是,对于fileSystemObject给我的这种日期类型,我该如何做同样的事情呢?

有可能将一种类型转换为另一种类型吗?

通过使用date值作为对象构造函数的参数创建新的Date对象,可以将该值转换为Date对象。如以下示例:

var fileDate = new Date( f.dateLastModified );
WSH.echo( fileDate + ' |type = ' + typeof(fileDate) );
WSH.echo( fileDate.getFullYear());

要将Date对象转换为date值,请使用以下命令:

var dateVal = fileDate.getVarDate();
WSH.echo( dateVal + ' |type = ' + typeof(dateVal) );