excel返回什么日期格式?



我正在制作一个将是全局的数据库,我正在从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();

是的,这正是我所想的- 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];

DateTime.Parse如果字符串格式符合CurrentCulture的标准日期时间模式之一,则成功解析字符串。

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

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

如果您的CurrentCulture和Paris的文化(我假设它们使用fr-FR文化)具有与您的字符串格式匹配的相同标准格式,则解析将成功。

相关内容

  • 没有找到相关文章

最新更新