1

VBScriptは、内部的に日付を小数点以下の部分の「0年」からの日数と、小数点の右側の現在の日の午前0時からのミリ秒で表すdoubleとして表します。「0年目」は1899年のようです

WScript.Echo Year(CDate(0))

信頼できます。

一方、JScriptは1970年の「0年」で始まり、それから現在までの合計ミリ秒として時間を表します。

誰かが、JScriptの日付をVBScriptの日付に変換し、これらの行に沿って、基になる日付のDoubleまたはLong形式を使用することを可能にするコードを教えてもらえますか?

4

3 に答える 3

4

エポックは、1970年1月1日00:00:00 UTCからの秒数で、任意の言語のエポックです。

 'Get current epoch with vbScript ...
  dim epoch
  epoch = dateDiff("s", "01/01/1970 00:00:00", now())
  wScript.echo "epoch now = " & epoch

エポックナウ=1346891880

 'And convert it back (probably the one you need) ...
  dim datetime
  datetime = dateAdd("s", epoch, "01/01/1970 00:00:00")
  wScript.echo "datetime from epoch " & epoch & " = " & datetime

エポックからの日時1346891880=2012年6月9日12:38:00AM

于 2012-09-05T15:11:42.780 に答える
2

タイムスタンプを使用して日付を生成し、doubleに変換します。

Function CurrentTZOffset()
    With CreateObject("WScript.Shell") 
        CurrentTZOffset = - .RegRead( _ 
        "HKLM\System\CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")
    End With
End Function

Dim dblVbEpoch
    dblVbEpoch = CDbl(DateAdd("s", 1336708766790 / 1000, #1970/1/1#))

WScript.Echo "VB Epoch :", dblVbEpoch
WScript.Echo "VB Date (GMT):", CDate(dblVbEpoch)
WScript.Echo "VB Date (LOCAL):", DateAdd("n", CurrentTZOffset(), CDate(dblVbEpoch))
WScript.Echo "JS Epoch From VB Epoch:", DateDiff("s", #1970/1/1#, CDate(dblVbEpoch)) * 1000
于 2012-06-03T13:05:03.370 に答える
0

DateVBScriptの日付とJScriptの日付の間の変換のみに関心がある場合、その機能はコンストラクターgetVarDateメソッドを介してJScriptに組み込まれています。

小さな例:

<job id="test">
    <script language="JScript" id="jsLibrary">
        function JSExample() {
            var jsDate = new Date(2014, 4, 12);
            VBPrintJSDate(jsDate);
        }

        function JSPrintVBDate(vbDate) {
            var jsDate = new Date(vbDate);
            WScript.Echo(jsDate.toUTCString());
        }
    </script>
    <script language="VBScript" id="vbLibrary">
        Option Explicit

        Sub VBExample
            Dim vbDate
            vbDate = DateSerial(2000, 11, 30)
            JSPrintVBDate(vbDate)
        End Sub

        Sub VBPrintJSDate(jsDate)
            Dim vbDate
            vbDate = jsDate.getVarDate()
            WScript.Echo FormatDateTime(vbDate)
        End Sub
    </script>
    <script language="VBScript" id="main">
        Option Explicit

        VBExample
        JSExample
    </script>
</job>
于 2014-08-13T06:35:40.273 に答える