事情经过说明:
在做VSTO开发的时候,因为要将excel中的一栏的日期值转为数值并保存到数据库中。比如excel中是"2009/01/01",则转换为20090101并保存之。因为excel中日期实际是以日期序列值保存的,以"1900/01/01"作为1依次类推。所以写了下面的一个function作转换。 public static int XlsDateToNum(object xlsidx)
{
int intRtn = 0;
try
{
int xlsdateidx = Convert.ToInt32(xlsidx) - 1; DateTime dtt = new DateTime(1900, 1, 1).AddDays(xlsdateidx); intRtn = int.Parse(dtt.ToString("yyyyMMdd")); }
catch (Exception)
{
} return intRtn; }结果发现DateTime.AddDays()算出的日期会比excel中算出的多一天。
比如差距天数为39814,DateTime(1900, 1, 1).AddDays(39814)得出的是:2009/1/3
而excel中算出来则是2009/1/2。谁能做一个解释呢?
在做VSTO开发的时候,因为要将excel中的一栏的日期值转为数值并保存到数据库中。比如excel中是"2009/01/01",则转换为20090101并保存之。因为excel中日期实际是以日期序列值保存的,以"1900/01/01"作为1依次类推。所以写了下面的一个function作转换。 public static int XlsDateToNum(object xlsidx)
{
int intRtn = 0;
try
{
int xlsdateidx = Convert.ToInt32(xlsidx) - 1; DateTime dtt = new DateTime(1900, 1, 1).AddDays(xlsdateidx); intRtn = int.Parse(dtt.ToString("yyyyMMdd")); }
catch (Exception)
{
} return intRtn; }结果发现DateTime.AddDays()算出的日期会比excel中算出的多一天。
比如差距天数为39814,DateTime(1900, 1, 1).AddDays(39814)得出的是:2009/1/3
而excel中算出来则是2009/1/2。谁能做一个解释呢?
解决方案 »
- datagridview导出到excel,"001"变成"1"怎么办????
- 图片的问题
- 数据集与绑定的问题
- 发送出去的邮件附件的名称包含了路径,该怎么办?
- C#中一个类A实现了一个接口,然后另一个类B的实现方法(接口的实现和依赖的实现)
- VS2003的代码编辑器中,很多对象、方法都有解释,就是那种黄色的提示框,怎么实现的?
- 水晶报表的自定义公式字段问题,急急!!!
- System.Random为什么不是System.Math.Random?
- C#中如何对字符串进行不区分大小写的比较?
- word 2013和2016 VSTO外接程序在word 2010里可用吗?
- 一个正则表达式的提取,看起来比较简单
- 日期判断
是不是EXCLE是算当前时间呀?
还有你加的天数太大了
你就加1天看看效果。
两位都用的什么操作系统呀?EXCLE都是什么版本?vs都是什么版本的?
13楼,你是用“Convert.ToInt32(39844)-1”做的测试,其实就是39843的间隔天数了。
你这样测试一下:vs和excel中你都加上39844的间隔天数试试.vs中算出来是2009/2/2, 而excel中算出来是2009/2/115楼:我的操作系统XP: vs2008 + office2007