C#,将字符串转换为DateTimeOffset
我正在尝试将字符串转换为DateTimeOffset。下面是我的字符串示例C#,将字符串转换为DateTimeOffset,c#,datetimeoffset,tryparse,C#,Datetimeoffset,Tryparse,我正在尝试将字符串转换为DateTimeOffset。下面是我的字符串示例2017/010/23:51:502017代表010年代表一年中的某一天,23:51:50代表时间。 我正在以下面的方式尝试,但无论输入是什么,它总是返回我0001-01-01 00:00:00.0000000+00:00。 我的代码 有什么建议吗 更新 为了简单起见,我没有把问题拖得太久。我的日期时间我从.txt文件的名称和日期时间(010/23:51:50有些内容有偏移,有些内容没有偏移)中获得年份(2017,可能是2
2017/010/23:51:50
2017代表010年代表一年中的某一天,23:51:50代表时间。
我正在以下面的方式尝试,但无论输入是什么,它总是返回我0001-01-01 00:00:00.0000000+00:00
。
我的代码
有什么建议吗
更新
为了简单起见,我没有把问题拖得太久。我的日期时间我从.txt
文件的名称和日期时间(010/23:51:50
有些内容有偏移,有些内容没有偏移)中获得年份(2017,可能是2002、2001
)。所以我的输入并不总是一样的。希望这能澄清通过查看,我认为您无法解析格式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]));
通过查看,我认为您无法解析格式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]));
首先按/拆分字符串,然后使用DayOfYear值和year来获取年/月/日。接下来拆分时间参数并使用它获取TimeSpan,并将其添加到以前获取的日期。接下来,只需解析新获得的date-to-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);
首先按/拆分字符串,然后使用DayOfYear值和year来获取年/月/日。接下来拆分时间参数并使用它获取TimeSpan,并将其添加到以前获取的日期。接下来,只需解析新获得的date-to-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);
当你说一年中的某一天,你的意思是从1到365吗?它返回了false,千万不要忽略它。使用Parse()来保持诚实。您是正确的@ofirwinegarten为什么要使用
DateTimeOffset
?日期字符串不包含偏移量信息。它是UTC格式的吗?当你说一年中的某一天时,它可能是重复的,你的意思是从1到365吗?它返回false,永远不要忽略它。使用Parse()来保持诚实。您是正确的@ofirwinegarten为什么要使用DateTimeOffset
?日期字符串不包含偏移量信息。它是UTC格式的吗?可能的重复项不需要经过字符串即可从DateTime
转换为DateTimeOffset
。但是,您确实需要知道要使用的偏移量。从DateTime
转换到DateTimeOffset
不需要遍历字符串。但是,您确实需要知道要使用的偏移量。