从MM/dd/yy格式创建有效日期

本文关键字:创建 有效日期 格式 dd MM yy | 更新日期: 2023-09-27 18:29:01

可能重复:
DateTime.TryParse世纪控件C#

我有一个C#应用程序,它从.DBF文件导入数据,并将其插入SQL Server。文件中有一个DOB列,其格式是可怕的MM/dd/yy。我只使用Convert.ToDateTime,大多数数据都会像我预期的那样转换成19世纪。有一些记录没有正确转换,有人在30年后出生。如何强制转换为只写MM/dd/19XX

例如,.DBF文件12/29/29中的这个日期被转换为12/29/2029

我正在阅读.DBF文件,如下所示:

 var fileInfo = new System.IO.FileInfo(dbfPath);
            string dsPath = fileInfo.DirectoryName.ToString();
            DataSet DSResult = new DataSet();
            using (OleDbConnection cn = new OleDbConnection(
          @"Provider=Microsoft.Jet.OLEDB.4.0;" +
          @"Data Source=" + dsPath + ";" +  //Set the Data Sourde = to the directory of the file.  
          @"Extended Properties=dBASE III;"))
            using (OleDbCommand cm = cn.CreateCommand())
            {
                cn.Open();
                cm.CommandText = "SELECT * FROM UPDATED"; //Specify the file name for the select statement.  
                using (OleDbDataAdapter dba = new OleDbDataAdapter(cm))
                {

                    dba.Fill(DSResult);
                }
            }

            return DSResult;

从MM/dd/yy格式创建有效日期

您可以更改Calendar.TwoDigitYearMax属性以更改100年范围的最后一年。

DateTimeFormatInfo formatProvider = new DateTimeFormatInfo();
formatProvider.Calendar.TwoDigitYearMax = DateTime.Now.Year;
DateTime date = DateTime.ParseExact("12/12/22", "MM/dd/yy", formatProvider);

如果您知道检索日期的确切格式,那么您可以使用DateTime结构的ParseExact()或TryParseExact)方法来正确转换日期表示。

它需要一个额外的foramt字符串参数才能以您想要的方式进行解析。

dateString = "Sun 15 Jun 2008 8:30 AM -06:00"; // your date string
format = "MM/dd/yy"; // format string
try {
    result = DateTime.ParseExact(dateString, format, provider);
}

但是评论中提到的数据窗口可能是一个问题