Sha*_*rix 2 .net vb.net datetime
DateTime和谷歌的新功能真诚地让我失望.我目前正在使用DateTime变量来跟踪游戏中的时间.
问题是,任何改变所述DateTime的尝试都会导致"Property [time]是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
Run Code Online (Sandbox Code Playgroud)
编辑#1;
Sub IncreaseTime(unit As Integer)
Dim NewDate As DateTime
With World.WorldTime
NewDate = NewDate.AddSeconds(unit)
.Date = NewDate
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑#2;
该DateTime
类型是不可变的 -所有的属性是只读的,所以你不能设置Date
,Time
或人甚至一个部分(年,分钟等).
由于没有任何属性可以直接设置,更改其中任何一个部分使用其中一个方法AddSeconds()
,AddYears()
等等.这些都创建并返回一个DateTime
具有所需调整的新值.要减去,只需使用负值:
WorldDate = WorldDate.AddMinutes(unit)
' to subtract:
WorldDate = WorldDate.AddMinutes(-unit)
Run Code Online (Sandbox Code Playgroud)
必须将结果分配给新变量或现有变量.
的原因很简单:将n分钟可能滚过Day
或Month
以及其他属性,如DayOfYear
或DayOfWeek
.允许直接访问需要大量检查值是否合法(如.Minutes = 67
或.Day = 33
).
要将日期或时间设置为特定值,请使用一些旧值创建一个新值并指定所需的其他值:
WorldDate = New DateTime(WorldDate.Year, WorldDate.Month, WorldDate.Day,
myHrs, mySecs, myMins)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
263 次 |
最近记录: |