.net - 如何更改 DateTime 变量的时间?

标签 .net vb.net datetime

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

问题是,任何更改所述日期时间的尝试都会导致“属性 [时间] 为只读”错误。任何帮助、工作替代方案或迂回方案将不胜感激。

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

最佳答案

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

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

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

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

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

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

WorldDate  = New DateTime(WorldDate.Year, WorldDate.Month, WorldDate.Day, 
         myHrs, mySecs, myMins)

关于.net - 如何更改 DateTime 变量的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515817/

相关文章:

c# - 使用 .NET 进行文件备份的最佳方法

vb.net - 如何以编程方式关闭视频加速

datetime - Ecto.DateTime 和时区

javascript - 将日期保存到数据库时,parameter.value.getTime 不是函数

mysql - 在 mysql 日期时间字段中存储持续时间/时间的可能性

c# - Webbrowser 每个控制不同的代理

c# - 根据 C# 中的实例化类,利用不同的依赖项

c# - 未处理的异常,MySql.Data.MySqlClient.MySqlException

c# - VB.NET 到 C# 字符串数组的转换

c# - 如何在 VB.NET 中实现 Bitboard?