C#,将字符串转换为 DateTimeOffset

C#, convert string to DateTimeOffset

我正在尝试将字符串转换为 DateTimeOffset。这是我的字符串的示例 2017/010/23:51:50 2017 代表年份 010 代表一年中的第几天 23:51:50 是时间。 我正在尝试以下方式,但它 returns 我 0001-01-01 00:00:00.0000000 +00:00 总是不管输入是什么。 我的代码

DateTimeOffset DateTime;
string year = ("2017/010/23:51:50");
DateTimeOffset.TryParse(year, out DateTime);

有什么建议吗?

更新 为简单起见,我没有留下我的问题。我的日期时间我从 .txt 文件的名称和日期和时间(010/23:51:50 一些有偏移量而一些内容没有)从 2017 it could be 2002, 2001 的内容.txt 文件。所以我的输入并不总是相同的。希望这能澄清

查看 date and time formats,我认为您无法解析格式 Year/JulianDay/Time。您可以做的是将字符串分成几部分,然后将日期添加到年份

string[] parts = year.Split('/');
DateTime dt = new DateTime(int.Parse(parts[0]), 1, 1); 
dt = dt.AddDays(int.Parse(parts[1]) - 1).Add(TimeSpan.Parse(parts[2]));

先用/分割字符串,然后用dayOfTheYear值和年份得到year/month/date。接下来拆分时间参数,用它来获取TimeSpan,加上之前获取的date。接下来,只需将您新获得的日期解析为 DateTimeOffset。此代码应该有效:

        string year = ("2017/010/23:51:50");
        var date = year.Split('/');
        var timeSpanVal = date[2].ToString().Split(':').Select(x=>Convert.ToInt32(x)).ToList();
        TimeSpan ts = new TimeSpan(timeSpanVal[0], timeSpanVal[1], timeSpanVal[2]);
        DateTime newDate = new DateTime(Convert.ToInt32(date[0]), 1, 1).AddDays(Convert.ToInt32(date[1]) - 1)+ts;

        DateTimeOffset.TryParse(newDate.ToString(), out DateTime);