4

私はC#で次のコードを持っています:

DateTime dt = GetDateTime();
string formatted = dt.ToString("yyyyMMddTHHmmsszz");

次の形式で日付を返します。

20100806T112917+01

VBScript で同じ結果が得られるようにしたいと考えています (従来の ASP アプリケーションの場合)。UTC オフセット情報を取得するか、時刻を UTC に変換することが特に重要です。

それ、どうやったら出来るの?

4

2 に答える 2

8

日付の書式設定には、VBScriptの.NETStringBuilderクラスを使用するのが好きです。

Option Explicit

Dim sb : Set sb = CreateObject("System.Text.StringBuilder")
sb.AppendFormat "{0:yyyyMMddTHHmmsszz}", Now()
Response.Write sb.ToString()

上記は戻ります:

20100806T201139-07

これは、Webサーバーに.NETがインストールされていることを前提としています。

于 2010-08-07T03:27:36.897 に答える
2

これが私自身の試みです。より良い解決策は喜んで受け入れられます!

Function ToDateTimeStringMinimalSeparators(dateTime)

    ' --------------------------------------------------------------------------
    '  F O R M A T   T H E   U T C   O F F S E T
    ' --------------------------------------------------------------------------

    Dim oShell, activeTimeBias
    Set oShell = CreateObject("WScript.Shell")
    activeTimeBias = oShell.RegRead("HKEY_LOCAL_MACHINE\System\" & _
        "CurrentControlSet\Control\TimeZoneInformation\ActiveTimeBias")

    Dim sign
    sign = "-"
    If activeTimeBias < 0 Then
        sign = "+"
        ' Make it positive while we're doing calculations
        activeTimeBias = activeTimeBias * -1
    End If

    Dim atbHours, atbMins
    atbHours = Right("00" & Int(activeTimeBias / 60), 2)
    atbMins = Right("00" & (activeTimeBias Mod 60), 2)
    If atbMins = "00" Then
        atbMins = ""
    End If

    Dim utcOffset
    utcOffset = sign & atbHours & atbMins

    ' --------------------------------------------------------------------------
    '  F O R M A T   T H E   M A I N   D A T E
    ' --------------------------------------------------------------------------

    Dim dateBody
    dateBody = Right("0000" & Year(dateTime), 4) & _
        Right("00" & Month(dateTime), 2) & _
        Right("00" & Day(dateTime), 2) & _
        "T" & _
        Right("00" & Hour(dateTime), 2) & _
        Right("00" & Minute(dateTime), 2) & _
        Right("00" & Second(dateTime), 2)

    ToDateTimeStringMinimalSeparators = dateBody & utcOffset

End Function
于 2010-08-06T12:37:12.947 に答える