【问题标题】:Change DateTime in the Microsoft Visual Studio debugger在 Microsoft Visual Studio 调试器中更改 DateTime
【发布时间】:2010-12-20 05:27:00
【问题描述】:

什么.... 如何在调试器中更改 DateTime 的值?我可以更改它,但离开编辑字段时出现错误;它无法解析它。

编辑:VS 2008,C#

【问题讨论】:

    标签: c# visual-studio debugging datetime


    【解决方案1】:

    不看你有什么,我不确定你指的是哪个编辑字段。不过,您可以尝试使用即时窗口和DateTime.Parsenew DateTime()

    【讨论】:

    • 例如在监视窗口中; DateTime 将显示为 {03/12/2009 00:00:00},但如果我更改例如日期为 04 而不是 03,我从 VS 收到错误:无效的表达式术语 '{'
    • 谢谢(还有你,旁观者),这正是我所需要的。虽然我认为这很糟糕 :-) 调试器应该支持这一点。
    • slugster 的答案有一个如何使用此答案的示例:只需在 立即 窗口中输入以下内容myDate = new DateTime(2009, 12, 25)
    【解决方案2】:

    您可以在即时窗口中更改日期。

    date = new DateTime(2009, 10, 05)
    {05/Oct/2009 12:00:00 AM}
        Date: {05/Oct/2009 12:00:00 AM}
        Day: 5
        DayOfWeek: Monday
        DayOfYear: 278
        Hour: 0
        Kind: Unspecified
        Millisecond: 0
        Minute: 0
        Month: 10
        Second: 0
        Ticks: 633902976000000000
        TimeOfDay: {00:00:00}
        Year: 2009
    

    【讨论】:

    • 如果日期不是只读的......但他要求更改 DateTime 的值......您的解决方案是更改参考。答案应该是——你不能,因为它是不可变的,不是吗?
    • 日期是不可变的,但这会创建一个新的日期对象,您可以将其分配给要更改的变量。
    【解决方案3】:

    我们可以直接在 Watch Window 中更改 DateTime 值。诀窍很简单:我们总是必须使用“new DateTime()”方法,并提供适当的参数。

    监视窗口不允许您直接输入新值,因此“2010-07-13 9:15”甚至 {13/07/2010 09:00:00} 之类的内容不起作用。

    【讨论】:

    • 您可以将鼠标直接悬停在变量上,而无需使用监视窗口。它适用于 Visual Studio 2012。我不知道以前的版本。
    • 谢谢,使用 new DateTime(...) 成功了!这是类的成员,并且即时窗口中的“token.expiry = new Datetime(...)”因“对象引用未设置为对象的实例”而失败。
    【解决方案4】:

    您可以在“即时”窗口、“监视”窗口或“快速监视”窗口中键入这样的内容,它们将被评估:

    myDate = DateTime.Today.AddDays(2)
    myDate = new DateTime(2009, 12, 25)
    

    【讨论】:

      【解决方案5】:

      如果你在括号之间定义你的 DateTime,你就可以做到。

      (new DateTime(2017, 09, 27))
      

      【讨论】:

        【解决方案6】:

        如果您的意思是在 Visual Studio 调试器上尝试这样:
        - 设置断点
        - 例如,在 QuickWatch 中打开您的 DateTime 变量(右键单击)
        - 在表达式文本框中输入新值,如果您的变量名称是“dt”,这是示例:
        dt = dt.AddDays(3)
        - 按回车并继续执行项目

        【讨论】:

          【解决方案7】:

          “dt =”部分并不是绝对必要的。只需键入“dt.AddDays(3)”或“new DateTime(...)”或 DateTime.Parse("") 等,调试器将尝试将您键入的表达式产生的任何值分配给变量受到监视;碰巧是因为 C# 有赋值表达式(例如 y = (x = 1); //sets y = 1),所以将表达式赋值给变量名是有效的。 :)

          【讨论】:

          • 签名被认为是错误的形式。详情请阅读常见问题解答。
          【解决方案8】:

          最简单的选择(非通用)=>

          例如在 watch window 内的 Value 输入中 输入DateTime.Now 然后回车

          等等! :)

          【讨论】:

            【解决方案9】:

            您可以在调试器模式下以毫秒为单位更改非公共数据值,以进行更改。

            【讨论】:

            • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-28
            • 2012-12-12
            • 2021-02-02
            相关资源
            最近更新 更多