CsvReader 日期时间类型 UTC
CsvReader DateTimeKind UTC
CsvReader 序列化程序正在将字符串“2017-01-09T00:01:47.6145940Z”转换为本地时间,但我想以 UTC 格式保存记录。
在不传递 Map 的情况下,有没有办法定义 DateTimeStyle?
转换代码如下:
using (var reader = new StreamReader(lakeStream))
using (var csv = new CsvReader(reader, new CsvConfiguration()
{
HasHeaderRecord = hasHeaderRecord,
Delimiter = delimiter,
IgnoreBlankLines = true,
IsHeaderCaseSensitive = false,
}))
{
rows = csv.GetRecords<T>().ToList();
}
我试过 CultureInfo 但无法正常工作
假设您无法覆盖将 CSV 日期转换为 DateTime
值的代码,您可以在转换后更正它,假设您的行类型 (class
) 没有该值不可变 属性(即您可以重新设置该值)。
rows = csv.GetRecords<Row>().ToList();
foreach(Row row in rows) {
row.SomeDateValue = row.SomeDateValue.ToUniversalTime();
}
默认情况下,解析 DateTime 将始终 return 当地时间。您可以选择使用此代码(DateTimeStyles.RoundtripKind
将保留输入字符串中的 DateTime 类型),假设 value
是包含您的日期的字符串:
DateTime parsedDate;
DateTime.TryParseExact(value, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out parsedDate);
或者按照其他答案的建议对已解析的对象使用 ToUniversalTime()
。
CsvReader 序列化程序正在将字符串“2017-01-09T00:01:47.6145940Z”转换为本地时间,但我想以 UTC 格式保存记录。
在不传递 Map 的情况下,有没有办法定义 DateTimeStyle?
转换代码如下:
using (var reader = new StreamReader(lakeStream))
using (var csv = new CsvReader(reader, new CsvConfiguration()
{
HasHeaderRecord = hasHeaderRecord,
Delimiter = delimiter,
IgnoreBlankLines = true,
IsHeaderCaseSensitive = false,
}))
{
rows = csv.GetRecords<T>().ToList();
}
我试过 CultureInfo 但无法正常工作
假设您无法覆盖将 CSV 日期转换为 DateTime
值的代码,您可以在转换后更正它,假设您的行类型 (class
) 没有该值不可变 属性(即您可以重新设置该值)。
rows = csv.GetRecords<Row>().ToList();
foreach(Row row in rows) {
row.SomeDateValue = row.SomeDateValue.ToUniversalTime();
}
默认情况下,解析 DateTime 将始终 return 当地时间。您可以选择使用此代码(DateTimeStyles.RoundtripKind
将保留输入字符串中的 DateTime 类型),假设 value
是包含您的日期的字符串:
DateTime parsedDate;
DateTime.TryParseExact(value, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out parsedDate);
或者按照其他答案的建议对已解析的对象使用 ToUniversalTime()
。