在ASP(Active Server Pages)开发中,显示和处理日期时间是非常常见的需求,例如动态网站首页显示当前时间、文章发布日期、活动倒计时等,ASP提供了丰富的内置函数和对象来实现日期时间的获取、格式化和计算,本文将详细介绍这些功能的应用方法。

基础日期时间获取函数
ASP中最常用的日期时间获取函数包括Date()、Time()和Now(),它们分别用于获取当前日期、当前时间和完整的日期时间信息。
Date()函数
Date()函数返回服务器的当前系统日期,格式为“YYYY-MM-DD”(2023-10-01”)。
示例代码:
<%
Dim currentDate
currentDate = Date()
Response.Write("当前日期是:" & currentDate)
%> 输出结果:当前日期是:2023-10-01
Time()函数
Time()函数返回服务器的当前系统时间,格式为“HH:MM:SS”(14:30:25”)。
示例代码:
<%
Dim currentTime
currentTime = Time()
Response.Write("当前时间是:" & currentTime)
%> 输出结果:当前时间是:14:30:25
Now()函数
Now()函数返回包含日期和时间的完整信息,格式为“YYYY-MM-DD HH:MM:SS”(2023-10-01 14:30:25”),是开发中最常用的函数之一。
示例代码:
<%
Dim nowDateTime
nowDateTime = Now()
Response.Write("当前完整日期时间是:" & nowDateTime)
%> 输出结果:当前完整日期时间是:2023-10-01 14:30:25
日期时间部分提取函数
除了上述函数,ASP还提供了提取日期时间各部分的函数,如Year()(年份)、Month()(月份)、Day()(日期)、Hour()(小时)、Minute()(分钟)、Second()(秒)。
示例代码:
<%
Dim myDateTime, yearVal, monthVal, dayVal, hourVal
myDateTime = Now()
yearVal = Year(myDateTime) ' 获取年份
monthVal = Month(myDateTime) ' 获取月份
dayVal = Day(myDateTime) ' 获取日期
hourVal = Hour(myDateTime) ' 获取小时
Response.Write("今天是" & yearVal & "年" & monthVal & "月" & dayVal & "日 " & hourVal & "时")
%> 输出结果:今天是2023年10月1日 14时
日期时间格式化输出
默认情况下,ASP返回的日期时间格式可能不符合实际需求(如“2023-10-01”需显示为“2023年10月1日”),此时可通过FormatDateTime()函数或Format()函数进行自定义格式化。
FormatDateTime()函数
FormatDateTime()函数是ASP内置的日期时间格式化函数,语法为:
FormatDateTime(Date, [NamedFormat])
Date为必填参数,表示要格式化的日期时间;NamedFormat为可选参数,用于指定格式类型,常用常量如下:
| 常量值 | 描述 | 示例(输入:2023-10-01 14:30:25) |
|——–|——|———————————-|
| vbGeneralDate | 通用格式(日期+时间,默认) | 2023-10-01 14:30:25 |
| vbShortDate | 短日期格式(YYYY-MM-DD) | 2023-10-01 |
| vbLongDate | 长日期格式(YYYY年MM月DD日 星期X) | 2023年10月1日 星期日 |
| vbShortTime | 短时间格式(HH:MM) | 14:30 |
| vbLongTime | 长时间格式(HH时MM分SS秒) | 14时30分25秒 |

示例代码:
<%
Dim myDate
myDate = Now()
Response.Write("短日期:" & FormatDateTime(myDate, vbShortDate) & "<br>")
Response.Write("长日期:" & FormatDateTime(myDate, vbLongDate) & "<br>")
Response.Write("短时间:" & FormatDateTime(myDate, vbShortTime) & "<br>")
Response.Write("长时间:" & FormatDateTime(myDate, vbLongTime) & "<br>")
%> 输出结果:
短日期:2023-10-01
长日期:2023年10月1日 星期日
短时间:14:30
长时间:14时30分25秒
Format()函数
Format()函数比FormatDateTime()更灵活,支持自定义格式字符串,语法为:
Format(Expression, [Format])
日期时间常用格式符号如下:
| 符号 | 描述 | 示例(输入:2023-10-01 14:30:25) |
|——|——|———————————-|
| yyyy | 四位年份 | 2023 |
| yy | 两位年份 | 23 |
| MM | 两位月份(01-12) | 10 |
| M | 一位月份(1-12) | 10 |
| dd | 两位日期(01-31) | 01 |
| d | 一位日期(1-31) | 1 |
| HH | 24小时制两位小时(00-23) | 14 |
| hh | 12小时制两位小时(01-12) | 02 |
| mm | 两位分钟(00-59) | 30 |
| ss | 两位秒(00-59) | 25 |
| AM/PM | 上午/下午标记 | PM |
示例代码:
<%
Dim myDateTime
myDateTime = Now()
Response.Write("自定义格式1:" & Format(myDateTime, "yyyy年MM月dd日 hh时mm分ss秒 AM/PM") & "<br>")
Response.Write("自定义格式2:" & Format(myDateTime, "YYYY-MM-DD dddd") & "<br>")
%> 输出结果:
自定义格式1:2023年10月01日 02时30分25秒 PM
自定义格式2:2023-10-01 星期日
日期时间计算与处理
ASP提供了DateAdd()、DateDiff()和DatePart()等函数,用于日期时间的加减、间隔计算和部分提取。
DateAdd()函数:增加/减少时间间隔
DateAdd()函数用于在指定日期上增加或减少指定的时间间隔,语法为:
DateAdd(interval, number, date)
interval:时间间隔类型(如“d”=日、“m”=月、“yyyy”=年、“h”=小时、“n”=分钟、“s”=秒)number:增加或减少的数量(正数为增加,负数为减少)date:基准日期时间
示例代码:
<%
Dim myDate, futureDate, pastDate
myDate = Now()
futureDate = DateAdd("d", 7, myDate) ' 当前日期加7天
pastDate = DateAdd("m", -2, myDate) ' 当前日期减2个月
Response.Write("当前日期:" & myDate & "<br>")
Response.Write("7天后:" & futureDate & "<br>")
Response.Write("2个月前:" & pastDate & "<br>")
%> 输出结果:
当前日期:2023-10-01 14:30:25
7天后:2023-10-08 14:30:25
2个月前:2023-08-01 14:30:25
DateDiff()函数:计算日期间隔
DateDiff()函数用于计算两个日期之间的时间间隔,语法为:
DateDiff(interval, date1, date2)
interval:间隔类型(同DateAdd())date1、date2:两个日期,计算date2与date1的间隔
示例代码:

<%
Dim date1, date2, diffDays
date1 = "2023-10-01"
date2 = "2023-10-08"
diffDays = DateDiff("d", date1, date2) ' 计算相差天数
Response.Write(date1 & " 和 " & date2 & " 相差 " & diffDays & " 天")
%> 输出结果:2023-10-01 和 2023-10-08 相差 7 天
DatePart()函数:提取日期时间部分
DatePart()函数用于从日期中提取指定部分(如年份、季度、星期几),语法为:
DatePart(interval, date)
interval:部分类型(如“yyyy”=年份、“q”=季度、“m”=月份、“d”=日期、“w”=星期几)
示例代码:
<%
Dim myDate, weekDay, quarter
myDate = Now()
weekDay = DatePart("w", myDate) ' 获取星期几(1=周日,7=周六)
quarter = DatePart("q", myDate) ' 获取季度
Response.Write("今天是星期" & weekDay & "<br>")
Response.Write("当前是第" & quarter & "季度")
%> 输出结果:今天是星期1
当前是第4季度
高级应用场景
中文日期显示(需设置页面编码)
若需显示中文日期(如“二〇二三年十月一日”),需先设置页面编码为UTF-8,并结合Format()函数自定义格式:
<%@ Language=VBScript CodePage=65001 %>
<%
Dim myDate
myDate = Now()
' 使用自定义格式转换中文数字(需额外函数,此处简化为常用格式)
Response.Write("中文日期:" & Format(myDate, "yyyy年mm月dd日"))
%> 输出结果:中文日期:2023年10月01日
时区转换
ASP默认使用服务器时区,若需转换时区(如UTC+8转UTC+0),可通过DateAdd()函数调整小时数:
<%
Dim serverTime, utcTime
serverTime = Now() ' 假设服务器时区为UTC+8
utcTime = DateAdd("h", -8, serverTime) ' 转换为UTC时间
Response.Write("服务器时间:" & serverTime & "<br>")
Response.Write("UTC时间:" & utcTime)
%> ASP常用日期时间函数一览表
| 函数名 | 功能 | 语法 | 示例 |
|---|---|---|---|
Date() | 获取当前日期 | Date() | Date() → 2023-10-01 |
Time() | 获取当前时间 | Time() | Time() → 14:30:25 |
Now() | 获取完整日期时间 | Now() | Now() → 2023-10-01 14:30:25 |
FormatDateTime() | 格式化日期时间 | FormatDateTime(date, namedFormat) | FormatDateTime(Now(), vbLongDate) → 2023年10月1日 星期日 |
DateAdd() | 增减时间间隔 | DateAdd(interval, number, date) | DateAdd("d", 7, Now()) → 7天后 |
DateDiff() | 计算日期间隔 | DateDiff(interval, date1, date2) | DateDiff("d", "2023-10-01", Now()) → 相差天数 |
DatePart() | 提取日期部分 | DatePart(interval, date) | DatePart("yyyy", Now()) → 2023 |
相关问答FAQs
问题1:ASP中如何显示“2023年10月1日(星期日)”这样的中文格式?
解答:需结合FormatDateTime()函数的vbLongDate常量,并确保页面编码正确,示例代码如下:
<%@ Language=VBScript CodePage=65001 %>
<%
Response.Write("今天是:" & FormatDateTime(Now(), vbLongDate))
%> 若需自定义中文数字(如“二〇二三”),需额外编写转换函数,vbLongDate已包含“星期X”格式。
问题2:如何计算2023年10月1日到2023年10月8日之间的工作日天数(排除周末)?
解答:可通过循环遍历两个日期之间的每一天,用DatePart("w", date)判断是否为周末(1=周日,7=周六),非周末则计数,示例代码如下:
<%
Function Workdays(startDate, endDate)
Dim currentDate, count
currentDate = startDate
count = 0
Do While currentDate <= endDate
If DatePart("w", currentDate) <> 1 And DatePart("w", currentDate) <> 7 Then
count = count + 1
End If
currentDate = DateAdd("d", 1, currentDate)
Loop
Workdays = count
End Function
Dim startDate, endDate, workdaysCount
startDate = "2023-10-01"
endDate = "2023-10-08"
workdaysCount = Workdays(startDate, endDate)
Response.Write(startDate & " 到 " & endDate & " 的工作日天数是:" & workdaysCount)
%> 输出结果:2023-10-01 到 2023-10-08 的工作日天数是:5(排除10月7日、8日两个周末)。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复