什么日期格式确实优秀?

时间:2014-05-05 10:50:32

标签: c# excel datetime date-format

我正在创建一个全局数据库,我正在从excel文件中读取日期。

我在解析DateTime时使用了本地机器的文化,并期望它们匹配。

d = DateTime.Parse(date, CultureInfo.CurrentCulture);

excel的日期不应该是CurrentCulture格式吗?

OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
                + src +
                ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"");

            OleDbDataAdapter da = new OleDbDataAdapter("select * from [data$]", con);

            DataSet ds = new DataSet();
            da.Fill(ds);
            dt = ds.Tables[0];
            rows = dt.Rows.Count;
            columns = dt.Columns.Count;

string date = dt.Rows[start].ItemArray[column].ToString();

2 个答案:

答案 0 :(得分:3)

是的,这正是我的想法 - Excel给你一个合适的日期,然后将它转换为字符串并尝试再次相反。相反,您希望直接从数据表中获取日期:

DateTime date = (DateTime)dt.Rows[start][column];

请注意,对于null值,类型不是DateTime,而是DBNull,因此您需要首先检查:

DateTime? date = dt.Rows[start][column] is DBNull 
                 ? default(DateTime?) 
                 : (DateTime)dt.Rows[start][column];

答案 1 :(得分:2)

如果字符串格式符合DateTime.Parse的标准日期时间模式之一,则

CurrentCulture会成功解析您的字符串。

您可以在CurrentCulture中找到所有标准日期时间模式;

var array = CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns();
foreach (var item in array)
{
    Console.WriteLine(item);
}

如果您的CurrentCulture和巴黎文化(我假设他们使用fr-FR文化)具有与您的字符串格式相同的标准格式,那么您的解析将会成功。

相关问题