【问题标题】:Converting DateTime data to String in dataset将 DateTime 数据转换为数据集中的字符串
【发布时间】:2009-05-14 10:23:04
【问题描述】:

我有一个将日期存储在 DataColumn 中的数据集(此列的数据类型是 DateTime)。我需要将格式从 DateTime 更改为字符串,以便根据我当前的文化为我提供日期。

如果是单个 DateTime 变量,我可以通过以下方式使用重载的 ToString() 来实现:

DateTime.Now.ToString(System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern)

但我需要将 DataSet 中所有行的数据转换为字符串。有人知道我如何实现这一目标吗?

谢谢。

【问题讨论】:

  • 哇... DateTime.Now.ToShortDateString() 有什么问题? ;)

标签: asp.net c#-2.0 dataset


【解决方案1】:

当你得到数据集时:

  • 找到合适的数据表
  • 添加新数据列
  • 在一个循环中,您使用 (your DateTime).ToString() 填充新列

【讨论】:

  • +1 用于建议单独的 DataColumn 而不是单独的 DataTable。
  • 这个方法到底行得通。虽然您可能不得不删除原始列 table.Columns.Add("StrDate", typeof(String)); table.Columns.Add("EdDate", typeof(String));
【解决方案2】:
  1. 获取数据集。
  2. 对于每一行转换为字符串和 将其放入新数据集中(连同 其余数据)。

【讨论】:

    【解决方案3】:

    我认为在表格填满后无法更改列类型。我认为您应该在数据集上创建第二个表,并复制您在此过程中转换日期所需的信息。

    【讨论】:

    • 是的,填满后无法更改。因此,我正在克隆和加载。我想知道是否有比遍历记录更简单的方法。
    【解决方案4】:

    新答案:)

    我一直在谷歌上搜索并想出了这个网站:Linq to Dataset

    该示例显示了如何在数据集上使用 linq,我猜您可以使用查询来执行数据转换并将其放在新的数据表上。不确定它是否会比循环更好

    【讨论】:

      【解决方案5】:

      如果我是你,我会按原样保留 DataTable 中的数据。毕竟,有意义的数据会在转换后失去意义。我只会在显示/渲染数据时进行任何所需的修改,因为这隐含需要将数据转换为字符串(具有可选格式)。

      任何 DateTime 变量都可以使用简单的代码呈现为字符串(具有文化敏感格式):

      DateTime.Now.ToShortDateString();
      // Or
      DateTime.Now.ToString("d");
      

      此函数已使用从当前文化派生的格式信息。

      我真的建议您再看看您的方案,以评估您是否真的需要更改数据集中数据的数据类型。 (或向我们提供更多信息)

      【讨论】:

      • 我的数据集被传递给一个 dll,该 dll 从数据集中生成 excel 报告。即使数据集具有我 PC 的当前文化,并且日期时间格式符合要求,但我无法在 excel 报告中获得所需的格式。所以只有 2 个选项是将数据集列更改为 reqd 格式的字符串,或者以某种方式获取 dll 代码(公司中的某个人已经编写了它)并对其进行更改。
      • 在这种情况下,我建议按照 Marko 的回答进行操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      相关资源
      最近更新 更多