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);
我正在尝试将字符串转换为 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);