如何更改DateTime变量的时间?

时间:2016-02-19 21:56:52

标签: .net vb.net datetime

DateTime和google的新功能真诚地让我失望。我目前正在使用DateTime变量来跟踪游戏中的时间。

问题是,任何改变所述DateTime的尝试都会导致"属性[时间]是ReadOnly"错误。任何帮助,工作替代或环形交叉路口将不胜感激。

Sub IncreaseTime(unit As Integer)
    Dim NewDate As DateTime

    With World.WorldTime
        NewDate = New DateTime(.Date.Year, .Date.Month, .Date.Day, .Date.Hour, .Date.Minute, .Date.Second + unit)
        .Date = NewDate
    End With
End Sub

编辑#1;

   Sub IncreaseTime(unit As Integer)
    Dim NewDate As DateTime

    With World.WorldTime
        NewDate = NewDate.AddSeconds(unit)
        .Date = NewDate
    End With
End Sub

编辑#2;

Image Image2

1 个答案:

答案 0 :(得分:5)

DateTime类型不可变 - 所有属性都是只读的,因此您无法设置DateTime甚至是其中的一部分(年,分等)。

由于没有任何属性可以直接设置,要更改其中任何一个部分,请使用其中一个方法AddSeconds()AddYears()等。这些都创建并返回一个新的DateTime具有所需调整的值。要减去,只需使用负值:

WorldDate = WorldDate.AddMinutes(unit)
' to subtract:
WorldDate = WorldDate.AddMinutes(-unit)

结果必须分配给新变量或现有变量。

原因非常简单:添加n分钟可能会覆盖DayMonth以及DayOfYear或{{1}等其他属性}。允许直接访问需要大量检查该值是否合法(例如DayOfWeek.Minutes = 67)。

要将日期或时间设置为特定值,请使用某些旧值创建一个新值并指定所需的其他值:

.Day = 33