.Net DataTable日期问题



我正在做一个项目,没有任何数据库。我使用ADO.Net的数据集,然后为了存储我的数据,我编写了xml文件,读取了xml文件并再次加载数据集。xml文件是项目文件,我必须将该文件从一个系统移动到另一个系统。

在这个数据集中,还有一列DateTime。

我想以特定格式(dd/MM/yyyy(将日期存储在字段中。

目前,我的问题是,它检测系统的日期格式并读取日期。但系统的日期格式可能因系统而异。有些人使用MM/dd/yyyy,有些人使用dd/MM/yyyy。因此,当格式更改时,它会抛出异常。他们有解决方案吗?

我可以强制数据表的DataTime字段接受自定义格式的日期吗?

提前谢谢。

我过去在序列化日期时间时也遇到过类似的问题。

我建议您去掉日期时间字段,改为使用字符串。这样,您就可以完全控制数据集中输入日期-时间对象的格式。

一旦你把它作为字符串输入,你就需要记录日期时间的记录区域和格式。你可以在软件中对这两个值进行硬编码,希望它们不会改变(不理想(。将它们放到.config文件中(更好(。

将这些附加字段添加到数据集中。

MyDateField   - DateTime as a string
Format.       - "dd/MM/yyyy HH:mm:ss" (for example)
Culture       - "EN-US" 

因此,当您从数据集中读取日期以实例化然后使用的DateTime对象时。

var dateTime = DateTime.ParseExact([mydatefield], [format], new cultureInfo([culture]));

*请注意,[]中的字段是从数据集中的一行检索到的值。

这样,当您在数据集中指定要使用的区域性和格式提供程序时,您可以在任何计算机上使用此日期时间字段。

您需要在数据集中的所有位置重构日期时间字段,以使用这些日期时间提供程序和区域性信息。

就我个人而言,我会从.config文件中读取格式和区域性信息,因为这些信息在数据集中不太可能逐行更改。

你试过这个吗:http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

您可以在第二个参数中指定数据的格式。

使用String.format方法编写日期时,也可以对其进行格式化。

DateTime对象只是将日期存储为一个属性,或者存储Month、Year、Day等的一系列属性。但是您可以格式化日期字符串,如下所示:

     string formatted = String.Format("{0:yyyy/MM/dd HH:mm}", datetime);

或者,如果你正在获取系统日期,我相信它会这样工作:

     string formatted = String.Format("{0:yyyy/MM/dd HH:mm}", DateTime.Now);

或者,如果您正在将字符串读取到DateTime对象中,则必须进行一些解析:

     string date = "2011/5/20"
     string dateparts = date.Split('/'); 
     string year = dateparts[0];
     string month = dateparts[1]; 
     string day = dateparts[2]; 
     DateTime dt = new DateTime(year, month, day, 0, 0, 0); 

但是DateTime对象可以从日期的各种字符串表示中初始化,通常不需要解析。取决于您的情况,

只是一个将日期时间序列化/反序列化为特定格式的快速示例

        DateTime s = DateTime.Now;
        MessageBox.Show(s.ToString("yyddMM"));
        MessageBox.Show(s.ToShortDateString());
        DateTime s2 = DateTime.ParseExact("110307", "yyddMM", CultureInfo.InvariantCulture);
        MessageBox.Show(s2.ToShortDateString());

我完全同意贾斯汀的观点。。只要您将日期存储在文本文件中,只需使用字符串字段而不是

相关内容

  • 没有找到相关文章

最新更新