【问题标题】:Format current date and time in VBScript在 VBScript 中格式化当前日期和时间
【发布时间】:2014-04-29 17:24:37
【问题描述】:

我想知道是否有人可以帮助我。

我是 ASP 的新手,我想将当前日期和时间格式化如下:

yyyy-mm-dd hh:mm:ss

但我能做的只有以下

Response.Write Date

谁能帮帮我。

【问题讨论】:

    标签: datetime vbscript asp-classic


    【解决方案1】:

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

    虽然有内置的日期时间函数,但可以更好地控制日期格式

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

    • Month(date) - 返回一个介于 1 和 12 之间的整数,包括 1 和 12,代表一年中的月份。传递Date() 将返回当年的当前月份。

    • MonthName(month[, abbv]) - 返回一个表示指定月份的字符串。传入 Month(Date()) 作为月份将返回当前的月份字符串。 根据@Martha的建议

    • Day(date) - 返回一个介于 1 和 31 之间的整数,包括 1 和 31,代表月份中的某天。传递Date() 将返回当前日期。

    • Hour(time) - 返回一个介于 0 和 23 之间的整数,包括 0 到 23,代表一天中的小时。传递Time() 将返回当前小时。

    • Minute(time) - 返回一个介于 0 和 59 之间的整数,包括 0 和 59,代表小时中的分钟。传递Time() 将返回当前分钟。

    • Second(time) - 返回一个介于 0 和 59 之间的整数,包括 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)
    

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


    【讨论】:

    • OP 似乎不需要它,但还有 MonthName(mm,abbr) 函数 - mm 是月份编号,abbr 是一个布尔值,指示是否缩写月份名称.
    • @Martha 是的,没有包括它,因为它与 OP 想要实现的日期格式无关。
    • 您可以简化更多,而 format_zeros 使用其他格式:right("00" & month(date()),2) 日期和年份的格式相同
    • @ Lankymart 您应该使用您提供给我的快捷方式来修改您的答案,例如 tmp = Right("00" & Hour(Time()), 2)。那你不能转储 format_zeros() 函数吗?感谢您让我们中的一些人在我确信您可以轻松回答问题的情况下回答问题。
    • @kneidels 在那种情况下00 不是必需的,但如果我传入一个变量(不是Day(dtsnow))并且它的值为空或空我希望它默认为@ 987654354@.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多