使用DateAdd()在Javascript/Classic ASP中设置日期格式

Date Formatting in Javascript/Classic ASP using DateAdd()

本文关键字:ASP 设置 日期 格式 Classic DateAdd Javascript 使用      更新时间:2023-09-26

我只想使用DateAdd函数以mm/dd/yyyy格式格式化日期。我有这样的代码,它将"LastBusinessDate"会话变量减去天数,使其看起来像是来自前几天的值,而不是静态日期。

DataArray[0] = new Array("<%=DateAdd("d",-1,Session("LastBusinessDate"))%>","Test Test","001","PRO000002",1);

问题是,如果会话("LastBusinessDate")值是个位数,例如2013年4月1日,则它将以m/d/yyyy的格式返回,而我希望它返回为2013年1月4日。我试过使用

DateFormat(DateAdd("d",-1,Session("LastBusinessDate")),"mm/dd/yyyy")

以及

DateAdd("d",-1,DateFormat(Session("LastBusinessDate"),"mm/dd/yyyy"))

还创建了一个函数,只传递要从日期中减去的天数,然后返回格式化的新日期,但这也不起作用。

function formatBizDate(byDays){
    var byDays = byDays;
    var dateChange = Session("LastBusinessDate");
    dateChange = dateFormat(dateChange,"mm/dd/yyyy");
    dateChange = DateAdd("d",byDays,dateChange);
    return dateChange;
}

不知道从这里去哪里。

在自定义日期格式中,mm表示MinutesMM表示Month

此:

mm/dd/yyyy

应该是

MM/dd/yyyy

VBScript日期格式函数是FormatDateTime(而不是"DateFormat"),但它非常有限:它只返回四种系统格式中的一种,其中两种是时间格式,而不是日期格式。如果系统日期格式不是这样设置的,那么这些格式都不会添加前导零。

我不完全清楚你是想在服务器端(即使用VBScript)还是客户端(即使用JavaScript)进行格式化。后者我帮不了你,但对于前者,我建议你这样做:

Function DateFormat(d)
  If IsDate(d) Then
    DateFormat = Right(100+Month(d),2) &"/"& Right(100+Day(d),2) &"/"& Year(d)
  Else
    DateFormat = d
  End If
End Function

严格来说,这实际上会返回一个字符串,而不是日期,但将其转换为日期(通过CDateDateValue)会删除您精心添加的前导零。

我可以看出这是一个老问题,但我自己也有很多问题,因为DateAdd()的输出格式取决于Web服务器上的区域设置,所以我想我无论如何都会分享:我通过在所有asp页面上注入以下代码片段,在服务器会话上强制设置区域设置,最终解决了这个问题:

'将服务器区域设置为丹麦语
会话LCID=1030

来源:https://www.webwiz.co.uk/kb/asp-tutorials/date-time-settings.htm(此页面还包含国家代码列表)