在VBScript中格式化当前日期和时间

13

我在想是否有人能帮助我。

我很新手,想要将当前日期和时间格式化如下:

yyyy-mm-dd hh:mm:ss

但我所能做的只有以下这些

Response.Write Date

有人能帮我一下吗?

1个回答

35

默认情况下,Classic ASP中的日期格式选项受到限制。有一个名为FormatDateTime()的函数可以根据服务器区域设置以各种方式格式化日期。

但是,如果要更精确地控制日期格式,则内置了日期时间函数:

  • Year(date) - 返回表示年份的整数。传递Date()将返回当前年份。

  • Month(date) - 返回介于1和12之间的整数,表示每年的月份。传递Date()将返回当前年份的月份。

  • MonthName(month[,abbv]) - 返回表示指定月份的字符串。将Month(Date())作为月份输入,则返回当前月份的字符串。@Martha提出的建议

  • Day(date) - 返回介于1和31之间的整数,表示每月的日子。传递Date()将返回当前月份的日期。

  • Hour(time) - 返回介于0和23之间的整数,表示每天的小时数。传递Time()将返回当前小时数。

  • Minute(time) - 返回介于0和59之间的整数,表示每小时的分钟数。传递Time()将返回当前分钟数。

  • Second(time) - 返回介于0和59之间的整数,表示每分钟的秒数。传递Time()将返回当前秒数。

重要提示: 在格式化日期/时间值时,一定要首先存储日期/时间值。同时,任何所需的计算(如DateAdd()等)都应在尝试格式化之前应用,否则会得到意外的结果。

Month()Day()Hour()Minute()Second() 函数都返回整数。不过,有一个简单的解决方法可以快速填充这些值:Right("00" & value, 2),它的作用是将00添加到值的前面,然后从右侧取出前两个字符。这样确保了所有单个数字值都带有前缀0

Dim dd, mm, yy, hh, nn, ss
Dim datevalue, timevalue, dtsnow, dtsvalue

'Store DateTimeStamp once.
dtsnow = Now()

'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 yyyy-mm-dd
datevalue = yy & "-" & mm & "-" & dd
'Build the time string in the format hh:mm:ss
timevalue = hh & ":" & nn & ":" & ss
'Concatenate both together to build the timestamp yyyy-mm-dd hh:mm:ss
dtsvalue = datevalue & " " & timevalue

Call Response.Write(dtsvalue)

注意: 您可以在一个调用中构建日期字符串,但决定将其拆分为三个变量以使其更易于阅读。



3
看起来 OP 不需要,但也可以使用 MonthName(mm,abbr) 函数 - mm 为月份数字,abbr 是一个布尔值,指示是否要缩写月份名称。 - Martha
@Martha 是的,我没有包含它,因为它与 OP 想要实现的日期格式无关。 - user692942
3
你可以更简化,不要使用format_zeros,改用另一种格式:right("00" & month(date()),2),日和年也采用同样的格式。 - Mastercafe
2
@Lankymart,你应该使用你提供给我的快捷方式来修改你在这里的答案,例如,tmp = Right("00" & Hour(Time()), 2)。那么你能否放弃format_zeros()函数呢?我很感激你让我们其他人回答问题,虽然我相信你也可以轻松地回答。 - Jake
1
在这种情况下,“00”不是必需的,但如果我传递的是一个变量(而不是“Day(dtsnow)”),并且它的值为null或为空,我希望它默认为“00”。 - user692942
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接