【问题标题】:Convert.ToDatetime not adding timestampConvert.ToDatetime 不添加时间戳
【发布时间】:2011-04-26 21:53:48
【问题描述】:

例如:

Dim testdate As String = "29/10/2010"
testdate = Convert.ToDateTime(testdate.ToString)
Response.Write(testdate)

期待“29/10/2010 00:00:00”我得到的是“29/10/2010”

【问题讨论】:

    标签: asp.net string datetime date


    【解决方案1】:

    您必须将 Convert.ToDateTime 的结果分配给 DateTime 对象,而不是字符串。

    Dim testdate As String = "29/10/2010"
    Dim date As DateTime = Convert.ToDateTime(testdate)
    Response.Write(date)
    

    这将以您机器的默认格式打印时钟和日期。

    【讨论】:

      【解决方案2】:

      最大的问题是,正如其他帖子中所提到的,您正在将 Convert 操作的 DateTime 结果隐式分配给字符串变量。这甚至不会通过 C# 中的编译器,因此您进入了 VB 如何对这些隐式赋值进行操作的领域,您可能不想在那里,因为如果语言规范的某些部分在新的框架版本中发生更改并且您尝试迁移您的代码,您可能会尝试找到一个令人讨厌的错误(在这里可能不那么重要,但在其他情况下,是的)。最好的做法是重写代码块以将 Convert 操作分配给 DateTime 对象,但更简单的解决方案是在 Convert.ToDateTime(testdate) 行的末尾抛出一个 .ToString() (即 testdate = Convert.ToString())。 DateTime(testdate).ToString() 这将使 testdate 的日期和时间戳格式化为当前文化(因为您现在正在执行 DateTime 和目标字符串之间的显式转换)。

      【讨论】:

        【解决方案3】:

        正如明确记录的here,不,这不是设计的行为。
        '05/01/1996' 转换为 5/1/1996 12:00:00 AM。
        'Tue Apr 28, 2009' 转换为 4/28/2009 12:00:00 AM。

        this article 可能会提供见解。

        【讨论】:

        • 返回上午/下午或 24 小时取决于您机器的区域设置/文化,除非您在程序中指定它。所以 date.ToString() 的默认输出是非常个性化的。
        • 我的网站在 web.config 中设置为 en-GB,但是信息需要去的数据库服务器设置为 en-US
        猜你喜欢
        • 1970-01-01
        • 2018-03-22
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2023-01-29
        相关资源
        最近更新 更多