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;
答案 0 :(得分:5)
DateTime
类型不可变 - 所有属性都是只读的,因此您无法设置Date
,Time
甚至是其中的一部分(年,分等)。
由于没有任何属性可以直接设置,要更改其中任何一个部分,请使用其中一个方法AddSeconds()
,AddYears()
等。这些都创建并返回一个新的DateTime
具有所需调整的值。要减去,只需使用负值:
WorldDate = WorldDate.AddMinutes(unit)
' to subtract:
WorldDate = WorldDate.AddMinutes(-unit)
结果必须分配给新变量或现有变量。
原因非常简单:添加n分钟可能会覆盖Day
或Month
以及DayOfYear
或{{1}等其他属性}。允许直接访问需要大量检查该值是否合法(例如DayOfWeek
或.Minutes = 67
)。
要将日期或时间设置为特定值,请使用某些旧值创建一个新值并指定所需的其他值:
.Day = 33