如何将字符串转换为datetime格式的经典asp

时间:2012-01-03 09:44:54

标签: asp-classic

我有一个变量

Dim tt="2008-10-20 10:00:00.0000000"

我想将其更改为日期,

5 个答案:

答案 0 :(得分:4)

试试CDATE(tt),请参阅http://www.w3schools.com/vbscript/func_cdate.asp。我用了

  

vbscript cdate

作为Google的关键字。结果更多。

编辑:根据以下评论(我很抱歉混淆),使用

FormatDateTime(date,format) 

格式包含以下常量:

  • 0 = vbGeneralDate - 默认。返回日期:mm / dd / yy和时间if 指定:hh:mm:ss PM / AM。
  • 1 = vbLongDate - 返回日期:工作日,月份名,年份
  • 2 = vbShortDate - 返回日期:mm / dd / yy
  • 3 = vbLongTime - 返回时间:hh:mm:ss PM / AM
  • 4 = vbShortTime - 返回时间:hh:mm

(从http://www.w3schools.com/vbscript/func_formatdatetime.asp复制)

答案 1 :(得分:1)

我提出了一个安全的解决方案,只有在转换成功时才会返回结果:

s="2008-10-20 10:00:00.0000000"
On Error Resume Next
d=CDate(Left(s,19))
On Error Goto 0
if not IsEmpty(d) then MsgBox d

尝试使用无效日期或无效格式。结果将为空。

s="2008-02-31 10:00:00"

在相同的上下文中,有必要初始化CData的变量收集结果。我建议将其初始化为Empty。下面的示例显示了这种情况 - 计算字符串数组中的有效日期:

Lines = array("2008-10-20 10:00:00.0000000", "2008-10-20 10:00:00", "", "2008-02-31", "Today", "2017-02-7")
On Error Resume Next
Count=0
for each Line in Lines
    d=Empty
    d=CDate(Line)
    if not IsEmpty(d) then Count=Count+1
next
On Error Goto 0
MsgBox "Number of valid dates is "&Count

正确的答案是2.没有初始化,我们得到5,因为CDate没有对错误做任何事情,所以变量保持循环中最近迭代的值。

答案 2 :(得分:0)

如果不需要你的毫秒,你可以使用以下内容:

<script type="text/vbscript">
    s="2008-10-20 10:00:00.0000000"
    arr= Split(s, ".")
    d=CDate(arr(0))
    document.write(d)
</script>

答案 3 :(得分:0)

我相信cdate依赖于本地设置来解析字符串。在许多情况下这并不好。

为避免这种情况,您需要使用 DateSerial()

如果需要,可以将任何时间组件分别添加到结果中。

答案 4 :(得分:0)

此链接(MS CDate page)解释说:

adate = CDate(astring)

将字符串转换为日期对象。对于那里,您可以使用FormatDateTime function

对其进行格式化
str = FormatDateTime(Date)

FormatDateTime函数是“智能” - 如果两者都存在,它将格式化为日期和时间,否则它将以日期或时间中的任何一个格式化。