UTC时间戳格式 - 分成包含UTC时间日期的字符串(经典的asp / vbscript)

时间:2018-01-10 17:30:42

标签: vbscript asp-classic

我相信我的问题被误解了:

我的字符串(uuttcc)包含 UTC时间戳格式,在其他页面中使用JAVASCRIPT创建。

我想再次指出,我的字符串恰好包含:星期三,2018年1月10日17:23:34 UTC

有没有办法打破这个 - > (Wed, 10 Jan 2018 17:23:34 UTC)到那个 - > (YYYY/MM/DD)?

我有一个包含UTC日期/时间的字符串(uuttcc)。

在:

<%
Response.Write(uuttcc)
%>

给我以下结果:

星期三,2018年1月10日17:23:34 UTC

有没有什么特别的方法可以将这个字符串分成3个部分,比如经典ASP / VBScript中的DD YY MM

2 个答案:

答案 0 :(得分:1)

不会回答,但在评论中注意到所有问题,请使用Split()

Dim input: input = "Wed, 10 Jan 2018 17:23:34 UTC"
Dim parsed: parsed = ParseDateString(input)
Dim output: output = Year(parsed) & "/" & Right("00" & Month(parsed), 2) & "/" & Right("00" & Day(parsed), 2)
Call Response.Write(output)

Function ParseDateString(value)
    'Split the string into manageable chunks.
    Dim parts: parts = Split(value, Chr(32))
    Dim dt, tm
    'Check the split created an array we can work with.
    If IsArray(parts) Then
        'Ignore the first element and use elements 1 - 3 to 
        'create the date structure.
        dt = parts(1) & Chr(32) & parts(2) & Chr(32) & parts(3)
        'Use the 5th element for the time structure.
        tm = parts(4)
        'Stitch them together to form a date variable.
        dt = CDate(dt & Chr(32) & tm)
    Else
        'We don't have a valid format return an empty string.
        dt = Empty
    End If
    ParseDateString = dt
End Function

输出:

2018/01/10

如何不使用Split()

主要问题是,CDate()使用CDate()后,Wed,可以识别字符串,以便您构建所需的格式。

事实上,使用UTC打破特定解析的唯一因素是Mid()InStr(),因此您可以使用Len(),{{1}的组合来忽略它们和这个紧凑的例子中的Dim input: input = "Wed, 10 Jan 2018 17:23:34 UTC" Dim output: output = CDate(Mid(input, InStr(1, input, ",") + 1, ((Len(input) - 4) - InStr(1, input, ",")))) 'You now have a valid `Date` variable you can manipulate to your hearts 'content. Call Response.Write(output) 一样;

10/01/2018 17:23:34
Vehicle

有用的链接

答案 1 :(得分:0)

使用Split()获取输入字符串的部分。将正确的部分输入DateSerial()/ CDate()以获得日期,如果这是您的区域设置/区域设置的方式,则显示/打印为/ d / m / y。如果您不需要Date,请通过Join()构建所需的String。如:

Option Explicit

Function mkDicMonth()
  Dim dicT :  Set dicT = CreateObject("Scripting.Dictionary")
  Dim i 
  For i = 1 To 12
      dicT(MonthName(i, True)) = i 
  Next
  Set mkDicMonth = dicT
End Function

Dim sInp   : sInp = "Wed, 10 Jan 2018 17:23:34 UTC"
Dim dicM   : Set dicM = mkDicMonth()
Dim aParts : aParts = Split(sInp)
Dim sOtp   : sOtp = Join(Array(aParts(1), dicM(aParts(2)), aParts(3)), "/")
WScript.Echo TypeName(sOtp), sOtp

Dim dtOtp
' DateSerial
dtOtp = DateSerial(CInt(aParts(3)), CInt(dicM(aParts(2))), CInt(aParts(1)))
WScript.Echo 1, TypeName(dtOtp), dtOtp, "(german locale, dmy)"

' CDate (risky, order, locale dependent)
dtOtp = CDate(sOtp)
WScript.Echo 2, TypeName(dtOtp), dtOtp, "(german locale, dmy)"

' CDate (risky, monthname, locale dependent)
dtOtp = CDate(Join(Array(aParts(1), aParts(2), aParts(3))))
WScript.Echo 3, TypeName(dtOtp), dtOtp, "(german locale, dmy)"

输出:

cscript 48193001.vbs
String 10/1/2018
1 Date 10.01.2018 (german locale, dmy)
2 Date 10.01.2018 (german locale, dmy)
3 Date 10.01.2018 (german locale, dmy)