我相信我的问题被误解了:
我的字符串(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
?
答案 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)