假设一个时间戳(只是时间或日期和时间),时间可以转到第二天:
00:00:00 < - 午夜
01:00:00 < - 1 AM
23:00:00 < - 11 PM
24:00:00 < - 午夜,白天+ 1
25:00:00 < - 凌晨1点,天+ 1
有什么办法可以轻松地将它解析成一个C#DateTime来执行第二天的结转?换句话说,"01:00:00"将变为"0001-01-01 01:00:00"并且"25:00:00"将变为"0001-01-02 01:00:00".
编辑:
我应该提到这个失败(即FormatException):
DateTime.ParseExact("0001-01-01 25:00:00", "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
既然您试图从任意点而不是特定日期表示一段时间,那么您最好使用System.TimeSpan类?这允许您在构造函数中设置超过24小时的值,并且可以与DateTime对象一起使用,如下所示:
System.TimeSpan timestamp = new System.TimeSpan(25, 0, 0);
System.DateTime parsedDateTime = new DateTime(0, 0, 0);
parsedDateTime = parsedDateTime.Add(timestamp);
Console.WriteLine(parsedDateTime.ToString("yyyy-MM-dd HH:mm:ss")); //Output as "0001-01-02 01:00:00"
Run Code Online (Sandbox Code Playgroud)
注意:代码未经测试.
编辑:在解析字符串方面,我想不出任何基本的.NET对象解析小时值大于23的字符串(因为25是一天中的无效小时),但假设格式是一致的,您可以创建一个非常简单的字符串解析例程(甚至是正则表达式)来单独读取值,并手动加载构造函数.
归档时间: |
|
查看次数: |
7264 次 |
最近记录: |