gpt4 book ai didi

c# - 将特定字符串转换为数据表行中的日期时间

转载 作者:行者123 更新时间:2023-11-30 12:26:46 24 4
gpt4 key购买 nike

我正在尝试将特定字符串转换为数据表中包含的日期时间。但由于某种原因不太奏效。我尝试了几种组合。问题是字符串实际上包含日期周围的“”。

因此 DataTable 中的单元格包含值(包括双引号)“2014-08-08 08:00:00”

我的代码遍历所有这些并尝试将其转换为 DateTime(需要它作为对 SQL Server 执行 bulkCopy.WriteToServer(datatable)。

  //Fix up default values and remove double quotes from field in order to convert to date
if(dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["usagestartdate"] =
dt.Rows[i]["usagestartdate"].ToString() == "" ?
DateTime.Now.AddYears(-2014) :
Convert.ToDateTime((dt.Rows[i]["invoiceid"].ToString().Replace("'", "")));
dt.Rows[i]["usagestartdate"] =
dt.Rows[i]["usageend"].ToString() == "" ?
DateTime.Now.AddYears(-2014) :
Convert.ToDateTime(dt.Rows[i]["usageend"].ToString());
}
}

我在循环内的第一行得到错误。

String was not recognized as a valid DateTime.

关于如何使转换正常工作有什么想法吗?

最佳答案

您正在混合使用单引号 (') 和双引号 (")。

这就是为什么当您编写 Replace("'", "") 部分时,它不会替换为任何内容,因为您的字符串没有任何单引号.这就是为什么一种解决方案可能是将代码中的 Replace("'", "") 更改为 Replace("\"", "")

但这是另一种方式

由于您使用的是 Convert.ToDateTime(string) overload , 此方法使用您的 CurrentCulture默认设置。并且没有一种文化具有标准的日期和时间格式,双引号字符串为 "yyyy-MM-dd HH:mm:ss"。这就是为什么,您需要使用自定义日期和时间解析 DateTime.TryParseExact method例如喜欢;

string s = "\"2014-08-08 08:00:00\"";
string format = "\\\"yyyy-MM-dd HH:mm:ss\\\"";
DateTime date;
if(DateTime.TryParseExact(s, format, CultureInfo.InvariantCulture,
DateTimeStyles.None, out date))
{
Console.WriteLine (date);
}

这里是一个 demonstration .

关于c# - 将特定字符串转换为数据表行中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com