我想将以下日期转换为GMT日期。请任何人都可以告诉我该怎么做。任何帮助将受到高度赞赏。
更新
嘿,我发现了这个
<% response.write currentUTC() %>
<script language=jscript runat=server>
function currentUTC(){
var d, s;
d = new Date();
s = "Server current UTC time is: ";
s += d.toUTCString('!%a, %d %b %Y %H:%M:%S GMT');
return(s);
}
</script>
输出:服务器当前UTC时间是:星期五,2016年1月15日07:42:13 UTC
但我需要这种格式: YYYYMMDDHHMMSS
请有人吗?
更新
我尝试使用以下功能:
GetServerGMT=Year(Now())&Month(Now())&Day(Now())&Hour(Now())&Minute(Now())&Second(Now())&WeekDay(Now())
输出:20161172035121
但这不是有效的时间戳。
答案 0 :(得分:0)
这取决于Date()
包含的内容。首先,您需要知道服务器最初的时区,因为Classic ASP从运行它的Web服务器的区域系统设置中获取日期。
完成此操作后,只需使用DateAdd()
来抵消当前时区的+
或-
小时数。
<%
Dim offset
'i.e PST to GMT
offset = -8
Response.Write DateAdd("h", Date(), offset)
%>
这仍然只是原始日期,并将以默认格式(基于服务器的区域系统设置)输出为字符串。
有关格式化日期的帮助,请参阅Format current date and time
根据此comment,您可以通过重新排列日期组件,使用链接答案中的示例来格式化此YYYYMMDDHHMMSS
;
Dim dt
dt = yy & mm & dd & hh & nn & ss
Response.Write dt
使用Now()
计算日期组件的值,但您可以将其替换为
dtsnow = DateAdd("h", Date(), offset)
在这里我更好的判断是如何使用链接答案中的示例来做到这一点,我只是想让你自己尝试。
Dim dd, mm, yy, hh, nn, ss
Dim datevalue, timevalue, dtsnow, dtsvalue
'UTC and GMT are the same no need for offset.
'Store DateTimeStamp once.
dtsnow = Now() 'Use Now() otherwise we don't have the Time.
'Individual date components
dd = Right("00" & Day(dtsnow), 2)
mm = Right("00" & Month(dtsnow), 2)
yy = Year(dtsnow)
hh = Right("00" & Hour(dtsnow), 2)
nn = Right("00" & Minute(dtsnow), 2)
ss = Right("00" & Second(dtsnow), 2)
'Build the date string in the format yyyymmdd
datevalue = yy & mm & dd
'Build the time string in the format hhmmss
timevalue = hh & nn & ss
'Concatenate both together to build the timestamp yyyymmddhhmmss
dtsvalue = datevalue & timevalue
'Output to screen
Call Response.Write(dtsvalue)
答案 1 :(得分:0)
添加到Lankymart链接的内容。 ASP Classic有很多时间/日期选项,根据我的经验,你似乎必须为每种不同类型创建一个函数或子函数。
My HTTP Only cookie GMT与我的GMT RSS Feed布局不同。
示例1:strGMTDateRFC22 = CookieServerUTC(“d”,1,5,“GMT”)
'# following formating RFC22 for your GMT Cookie time.
strGMTDateRFC22 = CookieServerUTC("d","&strCookieExpires&",5,"GMT") ' 1 Day set in char enc dec page
Response.AddHeader "Set-Cookie", strCookieName & "=" & strCookieKey & "=" & strCookieValue & "; expires=" & strGMTDateRFC22 & "; domain="& strCookieDomain &"; path=/; HTTPOnly"
两个功能中的第一个
Function CookieServerUTC(strD,strT,strOSet,strZ)
Dim strTG,strCookieD
'snipped unwanted code
strTG = DateAdd("h", strOSet,Now())
strCookieD = DateAdd(strD,strT,CDate(strTG))
CookieServerUTC = fncFmtDate(strCookieD, "%a, %d %b %Y %H:%N:%S "&strZ&"")
End Function
需要设置服务器UTC时的另一个示例 这允许strH =“h”strT =“5”(strT时间偏移+/-)和strZ GMT(时区)
Function GetServerUTC(strH,strT,strZ)
GetServerUTC = fncFmtDate(DateAdd(strH,strT,Now()), "%a, %d %b %Y %H:%N:%S "&strZ&"")
End Function
然后是在2001年ASP Classic仍处于HOT状态时发布的功能脚本。 4guysfromrolla.com发布了它,我可以想象它已经帮助了很多时间日期格式爱好者。
这是链接和打击,即2001年的代码从互联网上删除的代码。 Customizable Date Formatting Routine by Ken Schaefer
Function fncFmtDate( _
byVal strDate, _
byRef strFormat _
)
' Accepts strDate as a valid date/time,
' strFormat as the output template.
' The function finds each item in the
' template and replaces it with the
' relevant information extracted from strDate
' Template items (example)
' %m Month as a decimal (02)
' %B Full month name (February)
' %b Abbreviated month name (Feb )
' %d Day of the month (23)
' %O Ordinal of day of month (eg st or rd or nd)
' %j Day of the year (54)
' %Y Year with century (1998)
' %y Year without century (98)
' %w Weekday as integer (0 is Sunday)
' %a Abbreviated day name (Fri)
' %A Weekday Name (Friday)
' %H Hour in 24 hour format (24)
' %h Hour in 12 hour format (12)
' %N Minute as an integer (01)
' %n Minute as optional if minute <> 0
' %S Second as an integer (55)
' %P AM/PM Indicator (PM)
'#### READ THE FORMATTING GUIDE ABOVE #####
'Snipped the code due to the 1% possibility you didn't format your date / time correctly and the code tosses an error based on that formatting.
End Function ' fncFmtDate
如您所见,我们有许多可能的解决方案。 找到适合您的项目并在其上构建的日期时间格式解决方案。
Ken的代码确实需要特定的输入日期格式。 对于那些没有真正调试或创建自己的代码的人,你可以使用我在上面Ken的例子中构建的内容。
这只需要ASP Classic中的任何格式,并且它具有魔力。 请注意,代码的第一部分更正了单个数字问题。 如果你曾经使用货币格式,你应该知道这一点。
Murray的Active DateFormat to Anything Code改写了Ken开始的工作。 这是神奇的部分。
if (DatePart("m", strDate) < 10) then
twoDigMonth = "0" & DatePart("m", strDate)
else
twoDigMonth = DatePart("m", strDate)
end if
if (DatePart("d", strDate) < 10) then
twoDigDay = "0" & DatePart("d", strDate)
else
twoDigDay = DatePart("d", strDate)
end if
然后是其余的代码。 取出所有“On Error Resume Next”,因为只要您的输入得到纠正,就不需要它们。
' Insert Month Numbers
strFormat = Replace(strFormat, "%m", _
DatePart("m", strDate), 1, -1, vbBinaryCompare)
' Insert Month Numbers
strFormat = Replace(strFormat, "%M", _
twoDigMonth, 1, -1, vbBinaryCompare)
' Insert non-Abbreviated Month Names
strFormat = Replace(strFormat, "%B", _
MonthName(DatePart("m", strDate), _
False), 1, -1, vbBinaryCompare)
' Insert Abbreviated Month Names
strFormat = Replace(strFormat, "%b", _
MonthName(DatePart("m", strDate), _
True), 1, -1, vbBinaryCompare)
' Insert Day Of Month
strFormat = Replace(strFormat, "%d", _
DatePart("d",strDate), 1, _
-1, vbBinaryCompare)
' Insert Day Of Month
strFormat = Replace(strFormat, "%D", _
twoDigDay, 1, _
-1, vbBinaryCompare)
' Insert Day of Month Ordinal (eg st, th, or rd)
strFormat = Replace(strFormat, "%O", _
fncGetDayOrdinal(Day(strDate)), _
1, -1, vbBinaryCompare)
' Insert Day of Year
strFormat = Replace(strFormat, "%j", _
DatePart("y",strDate), 1, _
-1, vbBinaryCompare)
' Insert Long Year (4 digit)
strFormat = Replace(strFormat, "%Y", _
DatePart("yyyy",strDate), 1, _
-1, vbBinaryCompare)
' Insert Short Year (2 digit)
strFormat = Replace(strFormat, "%y", _
Right(DatePart("yyyy",strDate),2), _
1, -1, vbBinaryCompare)
' Insert Weekday as Integer (eg 0 = Sunday)
strFormat = Replace(strFormat, "%w", _
DatePart("w",strDate,1), 1, _
-1, vbBinaryCompare)
' Insert Abbreviated Weekday Name (eg Sun)
strFormat = Replace(strFormat, "%a", _
WeekDayName(DatePart("w",strDate,1),True), 1, _
-1, vbBinaryCompare)
' Insert non-Abbreviated Weekday Name
strFormat = Replace(strFormat, "%A", _
WeekDayName(DatePart("w",strDate,1),False), 1, _
-1, vbBinaryCompare)
' Insert Hour in 24hr format
str24HourPart = DatePart("h",strDate)
If Len(str24HourPart) < 2 then str24HourPart = "0" & _
str24HourPart
strFormat = Replace(strFormat, "%H", str24HourPart, 1, _
-1, vbBinaryCompare)
' Insert Hour in 12hr format
int12HourPart = DatePart("h",strDate) Mod 12
If int12HourPart = 0 then int12HourPart = 12
strFormat = Replace(strFormat, "%h", int12HourPart, 1, _
-1, vbBinaryCompare)
' Insert Minutes
strMinutePart = DatePart("n",strDate)
If Len(strMinutePart) < 2 then _
strMinutePart = "0" & strMinutePart
strFormat = Replace(strFormat, "%N", strMinutePart, _
1, -1, vbBinaryCompare)
' Insert Optional Minutes
If CInt(strMinutePart) = 0 then
strFormat = Replace(strFormat, "%n", "", 1, _
-1, vbBinaryCompare)
Else
If CInt(strMinutePart) < 10 then _
strMinutePart = "0" & strMinutePart
strMinutePart = ":" & strMinutePart
strFormat = Replace(strFormat, "%n", strMinutePart, _
1, -1, vbBinaryCompare)
End if
' Insert Seconds
strSecondPart = DatePart("s",strDate)
If Len(strSecondPart) < 2 then _
strSecondPart = "0" & strSecondPart
strFormat = Replace(strFormat, "%S", strSecondPart, 1, _
-1, vbBinaryCompare)
' Insert AM/PM indicator
If DatePart("h",strDate) >= 12 then
strAMPM = "PM"
Else
strAMPM = "AM"
End If
strFormat = Replace(strFormat, "%P", strAMPM, 1, _
-1, vbBinaryCompare)
fncFmtDate = strFormat
将这一切捆绑成一个很好的函数调用。
Function fncFmtDate(strDate, strFormat)
'Example for your perfect GMT time in Sitemaps, RSSFeeds, Google Stuff, Cookies
'# I'm in Louisiana so I'm -6 hours from GMT
'# fncFmtDate(DateAdd("h", -6,Now()), "%a, %d %b %H:%N:%S GMT")&"
'# Place code above here.... Don't forget the Magic part.
End Function
你有它,100%正常工作的代码。 如果你看到一个错误,那就是你的输入而不是功能。请务必遵循我列出的GMT格式示例。
我们无法为每位ASP Classic程序员提供完美的解决方案,我们提供适合我们的工作和基本代码实践 如果我认为这完全是关于复制和粘贴解决方案,那么自80年代以来我一直在发帖。 给它时间,使用错误陷阱并学习从左到右,从上到下阅读。
此处放置格式的解决方案:问题:输出:服务器当前 UTC时间是:2016年1月15日星期五07:42:13 UTC但我需要这种格式: YYYYMMDDHHMMSS
以下是使用该功能获取格式的方法。看看我如何将%a更改为%Y?这些内容都在代码中。
fncFmtDate(DateAdd("h", -6,Now()), "%Y, %m %d %H:%N:%S GMT")
如果您不需要空格或逗号将其取出。但是你如何展示你想要的格式是我在ASP开发中没有看到的。
fncFmtDate(DateAdd("h", -6,Now()), ""%Y%m%d%H%N%S GMT")
使用代码,告诉它你想要的输出,阅读代码。