I believe that my question is misunderstood:
My string (uuttcc)
contains a UTC time stamp format, created in other page with JAVASCRIPT.
Use Split() to get the parts of your input string. Feed the correct parts to DateSerial()/CDate() to get a Date that should display/print as /d/m/y if that's the way of your locale/Regional settings. If you don't need a Date, build the desired String
via Join(). As in:
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)"
output:
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)
Wasn't going to answer but with all the fluff in the comments, use 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
Output:
2018/01/10
Split()
?The main issue is getting the string to be recognised by CDate()
once you have this using inbuilt date functions will allow you to build whatever format you want.
In fact the only thing that breaks that particular parse using CDate()
is the Wed,
and UTC
, so you ignore them using a combination of Mid()
, InStr()
and Len()
as in this compact example;
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