zoukankan      html  css  js  c++  java
  • C#,Asp.NET 导入Excel,时间格式一串数字转换.

    在Excel中.日期或者时间格式为:42093.6506944444 或者 0.650694444444444

    大于0 表示有日期(2015-03-30),小于零则是时间(15:37)

    在C# 导入读取这列时,转换会发生错误;

    现在将这格式转换为正常的日期格式:如下

     1 /// <summary>
     2     /// 数字转换时间格式
     3     /// </summary>
     4     /// <param name="timeStr">数字,如:42095.7069444444/0.650694444444444</param>
     5     /// <returns>日期/时间格式</returns>
     6     private string ToDateTimeValue(string strNumber)
     7     {
     8         if (!string.IsNullOrWhiteSpace(strNumber))
     9         {
    10             Decimal tempValue;
    11             //先检查 是不是数字;
    12             if (Decimal.TryParse(strNumber, out tempValue))
    13             {
    14                 //天数,取整
    15                 int day = Convert.ToInt32(Math.Truncate(tempValue));
    16                 //这里也不知道为什么. 如果是小于32,则减1,否则减2
    17                 //日期从1900-01-01开始累加 
    18                 // day = day < 32 ? day - 1 : day - 2;
    19                 DateTime dt = new DateTime(1900, 1, 1).AddDays(day < 32 ? (day - 1) : (day - 2));
    20 
    21                 //小时:减掉天数,这个数字转换小时:(* 24) 
    22                 Decimal hourTemp = (tempValue - day) * 24;//获取小时数
    23                 //取整.小时数
    24                 int hour = Convert.ToInt32(Math.Truncate(hourTemp));
    25                 //分钟:减掉小时,( * 60)
    26                 //这里舍入,否则取值会有1分钟误差.
    27                 Decimal minuteTemp = Math.Round((hourTemp - hour) * 60, 2);//获取分钟数
    28                 int minute = Convert.ToInt32(Math.Truncate(minuteTemp));
    29                 //秒:减掉分钟,( * 60)
    30                 //这里舍入,否则取值会有1秒误差.
    31                 Decimal secondTemp = Math.Round((minuteTemp - minute) * 60, 2);//获取秒数
    32                 int second = Convert.ToInt32(Math.Truncate(secondTemp));
    33 
    34                 //时间格式:00:00:00
    35                 string resultTimes = string.Format("{0}:{1}:{2}",
    36                         (hour < 10 ? ("0" + hour) : hour.ToString()),
    37                         (minute < 10 ? ("0" + minute) : minute.ToString()),
    38                         (second < 10 ? ("0" + second) : second.ToString()));
    39 
    40                 if (day > 0)
    41                     return string.Format("{0} {1}", dt.ToString("yyyy-MM-dd"), resultTimes);
    42                 else
    43                     return resultTimes;
    44             }
    45         }
    46         return string.Empty;
    47     }
  • 相关阅读:
    测试学习使用
    Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
    web框架之Spring-MVC环境搭建
    serialVersionUID
    在eclipse中部署发布web项目 和 更改eclipseweb项目发布的路径
    servlet HttpSession 监听器
    java web 中的转发和重定向
    Spring MVC 中的 forward 和 redirect
    各个部门英语标识
    添加滚动条,内容多时显示,内容少时隐藏
  • 原文地址:https://www.cnblogs.com/wucai543/p/4378616.html
Copyright © 2011-2022 走看看