使用DateAdd()在Javascript / Classic ASP中进行日期格式化

时间:2013-11-20 15:39:11

标签: javascript date asp-classic date-format

我想做的就是使用DateAdd函数格式化mm / dd / yyyy格式的日期。我有这个代码,它减去了“LastBusinessDate”会话变量的天数,使它看起来像是前几天的值,而不是静态日期。

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

问题是如果会话(“LastBusinessDate”)值是单个数字,例如4/1/2013,当我希望它返回到04/01/2013时,它将以m / d / yyyy的格式返回。我尝试过使用

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;
}

不知道从哪里开始。

3 个答案:

答案 0 :(得分:2)

自定义日期格式中的

mm代表MinutesMM代表Month

这:

mm/dd/yyyy

应该是

MM/dd/yyyy

答案 1 :(得分:1)

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)会删除您精心添加的前导零。

答案 2 :(得分:0)

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

&#39;将服务器区域设置为丹麦语 Session.LCID = 1030

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