将字符串转换为 VB.net 中的日期时间
Converting a string to a DateTime in VB.net
我正在编写一个从 APC UPS 获取 SNMP 数据的应用程序,我想对这些数据做一些事情。
我得到的一些信息采用这种格式:
0d 2h 5m 45s 0ms
我希望能够在该值低于 30 分钟(总时间 - 包括天数和小时数)时执行某些操作。
如果我可以将该字符串转换为 DateTime,那么我就可以对其执行计算。
我想我想将该字符串添加到 Now()... 这样我就可以查询它在未来有多远。
我希望这是有道理的?
在我的脑海中,代码看起来像这样:
Dim timeNow As DateTime = Now
Dim snmpRuntimeRemaining As DateTime = Now + snmpDataTime
Dim runtimeRemaining As TimeSpan = snmpRuntimeRemaining - timeNow
If runtimeRemaining.TotalMinutes >= 30 Then Do Something
添加到.Now():
var t = new TimeSpan(days, hours, minutes, seconds, milliseconds);
var d = DateTime.Now + t;
使用命名的 Regex 组可以获得的天数、小时数等:
var r = new Regex(@"(?<days>\d+)d (?<hours>\d+)h...");
var m = r.Match(input);
var days = m.Groups["days"].Value;
PS 你不需要实际添加到 。现在,你可以这样做:
var t1 = (as above)
var t2 = Timespan.FromMinutes(30);
if(t1 < t2) doSth(); // if timespan from string is less (shorter) than 30 minutes
代码在 C# 中,但我认为您可以轻松适应它:)
我采用了与 Regex 略有不同的路线,它需要整理 - 但我是这样做的:
Dim snmpTimeDate As String = "0d 2h 5m 45s 0ms"
Dim split() As String = snmpTimeDate.Split(" ")
Dim days As String = split(0).Replace("d", "")
Dim hours As String = split(1).Replace("h", "")
Dim minutes As String = split(2).Replace("m", "")
Dim seconds As String = split(3).Replace("s", "")
Dim miliseconds As String = split(4).Replace("ms", "")
Dim snmpToTimeSpan = New TimeSpan(days, hours, minutes, seconds, miliseconds)
Dim snmpDateTime = DateTime.Now + snmpToTimeSpan
Dim runtimeRemaining As TimeSpan = snmpDateTime - DateTime.Now
If runtimeRemaining.TotalMinutes >= 30 Then Do Something
感谢 Gerino 的帮助!
我正在编写一个从 APC UPS 获取 SNMP 数据的应用程序,我想对这些数据做一些事情。
我得到的一些信息采用这种格式:
0d 2h 5m 45s 0ms
我希望能够在该值低于 30 分钟(总时间 - 包括天数和小时数)时执行某些操作。
如果我可以将该字符串转换为 DateTime,那么我就可以对其执行计算。
我想我想将该字符串添加到 Now()... 这样我就可以查询它在未来有多远。
我希望这是有道理的?
在我的脑海中,代码看起来像这样:
Dim timeNow As DateTime = Now
Dim snmpRuntimeRemaining As DateTime = Now + snmpDataTime
Dim runtimeRemaining As TimeSpan = snmpRuntimeRemaining - timeNow
If runtimeRemaining.TotalMinutes >= 30 Then Do Something
添加到.Now():
var t = new TimeSpan(days, hours, minutes, seconds, milliseconds);
var d = DateTime.Now + t;
使用命名的 Regex 组可以获得的天数、小时数等:
var r = new Regex(@"(?<days>\d+)d (?<hours>\d+)h...");
var m = r.Match(input);
var days = m.Groups["days"].Value;
PS 你不需要实际添加到 。现在,你可以这样做:
var t1 = (as above)
var t2 = Timespan.FromMinutes(30);
if(t1 < t2) doSth(); // if timespan from string is less (shorter) than 30 minutes
代码在 C# 中,但我认为您可以轻松适应它:)
我采用了与 Regex 略有不同的路线,它需要整理 - 但我是这样做的:
Dim snmpTimeDate As String = "0d 2h 5m 45s 0ms"
Dim split() As String = snmpTimeDate.Split(" ")
Dim days As String = split(0).Replace("d", "")
Dim hours As String = split(1).Replace("h", "")
Dim minutes As String = split(2).Replace("m", "")
Dim seconds As String = split(3).Replace("s", "")
Dim miliseconds As String = split(4).Replace("ms", "")
Dim snmpToTimeSpan = New TimeSpan(days, hours, minutes, seconds, miliseconds)
Dim snmpDateTime = DateTime.Now + snmpToTimeSpan
Dim runtimeRemaining As TimeSpan = snmpDateTime - DateTime.Now
If runtimeRemaining.TotalMinutes >= 30 Then Do Something
感谢 Gerino 的帮助!