2012-07-17 40 views
0

我正在嘗試使用JavaScript語法在WSH中進行一些簡單的文件比較。 我使用Windows XP SP3,和腳本通過的Cscript.exe運行WSH中的日期類型(以及與日期對象的區別)

我的問題來自於文件對象的dateLastModified財產,至極不處理通常的日期操作功能 - 就像getDay()或和getFullYear ()

看來微軟的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給出的日期類型做了同樣的事情嗎?

是否可以將一種類型轉換爲另一種類型?

回答

2

通過使用該值作爲對象構造函數的參數創建新的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)); 
+0

工作太棒了!我只是想知道爲什麼我會將Date對象轉換回日期值? – 2012-07-18 08:59:58

+0

@ dev.greg:日期值類型是Visual Basic和ActiveX對象使用的類型。 'Scripting.FileSystemObject'是其中一個ActiveX對象的例子。一些對象方法需要'date'值作爲它們的參數,幸運的是,JavaScript可以自動將Date值轉換爲日期值(但不是相反)。 'getVarDate'方法可能與用於自動轉換的方法相同,並且爲了靈活性而可以訪問。像'toString'和'valueOf'方法。 – Jay 2012-07-18 12:29:47