• 常用方法 读取 Excel的单位格 为 日期格式 的数据


    原文:地址忘了 百度应该有

    Excel的单元格为日期格式,数值型日期,可用下面这个方法得到正常的数据

         /// <summary>
            /// 数字格式的时间 转换为 字符串格式的时间
            /// 数字格式的时间 如: 42095.7069444444/0.650694444444444
            /// </summary>
            /// <param name="timeStr">数字,如:42095.7069444444/0.650694444444444</param>
            /// <returns>日期/时间格式</returns>
            public string ToDateTimeValue(string strNumber)
            {
                if (!string.IsNullOrWhiteSpace(strNumber))
                {
                    Decimal tempValue;
                    //先检查 是不是数字;
                    if (Decimal.TryParse(strNumber, out tempValue))
                    {
                        //天数,取整
                        int day = Convert.ToInt32(Math.Truncate(tempValue));
                        //这里也不知道为什么. 如果是小于32,则减1,否则减2
                        //日期从1900-01-01开始累加 
                        // day = day < 32 ? day - 1 : day - 2;
                        DateTime dt = new DateTime(1900, 1, 1).AddDays(day < 32 ? (day - 1) : (day - 2));
    
                        //小时:减掉天数,这个数字转换小时:(* 24) 
                        Decimal hourTemp = (tempValue - day) * 24;//获取小时数
                                                                  //取整.小时数
                        int hour = Convert.ToInt32(Math.Truncate(hourTemp));
                        //分钟:减掉小时,( * 60)
                        //这里舍入,否则取值会有1分钟误差.
                        Decimal minuteTemp = Math.Round((hourTemp - hour) * 60, 2);//获取分钟数
                        int minute = Convert.ToInt32(Math.Truncate(minuteTemp));
                        //秒:减掉分钟,( * 60)
                        //这里舍入,否则取值会有1秒误差.
                        Decimal secondTemp = Math.Round((minuteTemp - minute) * 60, 2);//获取秒数
                        int second = Convert.ToInt32(Math.Truncate(secondTemp));
    
                        //时间格式:00:00:00
                        string resultTimes = string.Format("{0}:{1}:{2}",
                                (hour < 10 ? ("0" + hour) : hour.ToString()),
                                (minute < 10 ? ("0" + minute) : minute.ToString()),
                                (second < 10 ? ("0" + second) : second.ToString()));
    
                        if (day > 0)
                            return string.Format("{0} {1}", dt.ToString("yyyy-MM-dd"), resultTimes);
                        else
                            return resultTimes;
                    }
                }
                return string.Empty;
            }
  • 相关阅读:
    HTML-参考手册: HTTP 状态消息
    HTML-参考手册: HTML 语言代码
    HTML-参考手册: URL 编码
    HTML-参考手册: HTML 符号实体
    HTML-参考手册: HTML ISO-8859-1
    HTML-参考手册: HTML ASCII
    HTML-参考手册: HTML 字符集
    HTML-参考手册: 颜色混搭
    HTML-参考手册: HTML 拾色器
    HTML-参考手册: HTML 颜色名
  • 原文地址:https://www.cnblogs.com/guxingy/p/11362812.html
Copyright © 2020-2023  润新知