using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; namespace MSCL
{
/// <summary>
/// 时间日期处理类
/// </summary>
public class DateTimeHelper
{ #region 返回本年有多少天
/// <summary>返回本年有多少天</summary>
/// <param name="iYear">年份</param>
/// <returns>本年的天数</returns>
public static int GetDaysOfYear(int iYear)
{
int cnt = ;
if (IsRuYear(iYear))
{
//闰年多 1 天 即:2 月为 29 天
cnt = ; }
else
{
//--非闰年少1天 即:2 月为 28 天
cnt = ;
}
return cnt;
}
#endregion #region 返回本年有多少天
/// <summary>本年有多少天</summary>
/// <param name="dt">日期</param>
/// <returns>本天在当年的天数</returns>
public static int GetDaysOfYear(DateTime idt)
{
int n; //取得传入参数的年份部分,用来判断是否是闰年 n = idt.Year;
if (IsRuYear(n))
{
//闰年多 1 天 即:2 月为 29 天
return ;
}
else
{
//--非闰年少1天 即:2 月为 28 天
return ;
} }
#endregion #region 返回本月有多少天
/// <summary>本月有多少天</summary>
/// <param name="iYear">年</param>
/// <param name="Month">月</param>
/// <returns>天数</returns>
public static int GetDaysOfMonth(int iYear, int Month)
{
int days = ;
switch (Month)
{
case :
days = ;
break;
case :
if (IsRuYear(iYear))
{
//闰年多 1 天 即:2 月为 29 天
days = ;
}
else
{
//--非闰年少1天 即:2 月为 28 天
days = ;
} break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
} return days;
}
#endregion #region 返回本月有多少天
/// <summary>本月有多少天</summary>
/// <param name="dt">日期</param>
/// <returns>天数</returns>
public static int GetDaysOfMonth(DateTime dt)
{
//--------------------------------//
//--从dt中取得当前的年,月信息 --//
//--------------------------------//
int year, month, days = ;
year = dt.Year;
month = dt.Month; //--利用年月信息,得到当前月的天数信息。
switch (month)
{
case :
days = ;
break;
case :
if (IsRuYear(year))
{
//闰年多 1 天 即:2 月为 29 天
days = ;
}
else
{
//--非闰年少1天 即:2 月为 28 天
days = ;
} break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
case :
days = ;
break;
} return days; }
#endregion #region 返回当前日期的星期名称
/// <summary>返回当前日期的星期名称</summary>
/// <param name="dt">日期</param>
/// <returns>星期名称</returns>
public static string GetWeekNameOfDay(DateTime idt)
{
string dt, week = ""; dt = idt.DayOfWeek.ToString();
switch (dt)
{
case "Mondy":
week = "星期一";
break;
case "Tuesday":
week = "星期二";
break;
case "Wednesday":
week = "星期三";
break;
case "Thursday":
week = "星期四";
break;
case "Friday":
week = "星期五";
break;
case "Saturday":
week = "星期六";
break;
case "Sunday":
week = "星期日";
break; }
return week;
}
#endregion #region 返回当前日期的星期编号
/// <summary>返回当前日期的星期编号</summary>
/// <param name="dt">日期</param>
/// <returns>星期数字编号</returns>
public static string GetWeekNumberOfDay(DateTime idt)
{
string dt, week = ""; dt = idt.DayOfWeek.ToString();
switch (dt)
{
case "Mondy":
week = "";
break;
case "Tuesday":
week = "";
break;
case "Wednesday":
week = "";
break;
case "Thursday":
week = "";
break;
case "Friday":
week = "";
break;
case "Saturday":
week = "";
break;
case "Sunday":
week = "";
break; } return week; }
#endregion #region 判断当前日期所属的年份是否是闰年,私有函数
/// <summary>判断当前日期所属的年份是否是闰年,私有函数</summary>
/// <param name="dt">日期</param>
/// <returns>是闰年:True ,不是闰年:False</returns>
private static bool IsRuYear(DateTime idt)
{
//形式参数为日期类型
//例如:2003-12-12
int n;
n = idt.Year; if ((n % == ) || (n % == && n % != ))
{
return true;
}
else
{
return false;
}
}
#endregion #region 判断当前年份是否是闰年,私有函数
/// <summary>判断当前年份是否是闰年,私有函数</summary>
/// <param name="dt">年份</param>
/// <returns>是闰年:True ,不是闰年:False</returns>
private static bool IsRuYear(int iYear)
{
//形式参数为年份
//例如:2003
int n;
n = iYear; if ((n % == ) || (n % == && n % != ))
{
return true;
}
else
{
return false;
}
}
#endregion #region 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期
/// <summary>
/// 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期。
/// </summary>
/// <param name="strInput">输入字符串</param>
/// <returns>日期对象</returns>
public static DateTime ConvertStringToDate(string strInput)
{
DateTime oDateTime; try
{
oDateTime = DateTime.Parse(strInput);
}
catch (Exception)
{
oDateTime = DateTime.Today;
} return oDateTime;
}
#endregion #region 将日期对象转化为格式字符串
/// <summary>
/// 将日期对象转化为格式字符串
/// </summary>
/// <param name="oDateTime">日期对象</param>
/// <param name="strFormat">
/// 格式:
/// "SHORTDATE"===短日期
/// "LONGDATE"==长日期
/// 其它====自定义格式
/// </param>
/// <returns>日期字符串</returns>
public static string ConvertDateToString(DateTime oDateTime, string strFormat)
{
string strDate = ""; try
{
switch (strFormat.ToUpper())
{
case "SHORTDATE":
strDate = oDateTime.ToShortDateString();
break;
case "LONGDATE":
strDate = oDateTime.ToLongDateString();
break;
default:
strDate = oDateTime.ToString(strFormat);
break;
}
}
catch (Exception)
{
strDate = oDateTime.ToShortDateString();
} return strDate;
}
#endregion #region 判断是否为合法日期,必须大于1800年1月1日
/// <summary>
/// 判断是否为合法日期,必须大于1800年1月1日
/// </summary>
/// <param name="strDate">输入日期字符串</param>
/// <returns>True/False</returns>
public static bool IsDateTime(string strDate)
{
try
{
DateTime oDate = DateTime.Parse(strDate);
if (oDate.CompareTo(DateTime.Parse("1800-1-1")) > )
return true;
else
return false;
}
catch (Exception)
{
return false;
}
}
#endregion #region 获取两个日期之间的差值 可返回年 月 日 小时 分钟 秒
/// <summary>
/// 获取两个日期之间的差值
/// </summary>
/// <param name="howtocompare">比较的方式可为:year month day hour minute second</param>
/// <param name="startDate">开始日期</param>
/// <param name="endDate">结束日期</param>
/// <returns>时间差</returns>
public static double DateDiff(string howtocompare, DateTime startDate, DateTime endDate)
{
double diff = ;
try
{
TimeSpan TS = new TimeSpan(endDate.Ticks - startDate.Ticks); switch (howtocompare.ToLower())
{
case "year":
diff = Convert.ToDouble(TS.TotalDays / );
break;
case "month":
diff = Convert.ToDouble((TS.TotalDays / ) * );
break;
case "day":
diff = Convert.ToDouble(TS.TotalDays);
break;
case "hour":
diff = Convert.ToDouble(TS.TotalHours);
break;
case "minute":
diff = Convert.ToDouble(TS.TotalMinutes);
break;
case "second":
diff = Convert.ToDouble(TS.TotalSeconds);
break;
}
}
catch (Exception)
{
diff = ;
}
return diff;
}
#endregion #region 计算两个日期之间相差的工作日天数
/// <summary>
/// 计算两个日期之间相差的工作日天数
/// </summary>
/// <param name="dtStart">开始日期</param>
/// <param name="dtEnd">结束日期</param>
/// <param name="Flag">是否除去周六,周日</param>
/// <returns>Int</returns>
public static int CalculateWorkingDays(DateTime dtStart, DateTime dtEnd, bool Flag)
{
int count = ;
for (DateTime dtTemp = dtStart; dtTemp < dtEnd; dtTemp = dtTemp.AddDays())
{
if (Flag)
{
if (dtTemp.DayOfWeek != DayOfWeek.Saturday && dtTemp.DayOfWeek != DayOfWeek.Sunday)
{
count++;
}
}
else
{
count++;
}
}
return count;
}
#endregion
}
}

http://blog.csdn.net/smartsmile2012/article/details/8536611

asp.net(C#)常用时间日期处理类的更多相关文章

  1. asp.net(C#)实现功能强大的时间日期处理类完整实例

    作者:smartsmile2012 字体:[增加 减小] 类型:转载 时间:2016-06-30我要评论 这篇文章主要介绍了asp.net(C#)实现功能强大的时间日期处理类,封装了针对日期与时间的各 ...

  2. asp.net中的时间日期选择控件

    asp.net中的时间日期选择控件 Posted on 2008-07-17 17:37 飛雪飄寒 阅读(22922) 评论(6) 编辑 收藏     在系统中经常需要进行时间日期选择(比如查询时间范 ...

  3. java编程--04比较几个常用的日期时间相关类的区别

    第一篇,介绍日期的比较 第二篇,介绍日期的格式化 第三篇,介绍关于日期常用的计算 第四篇,比较几个常用的日期时间相关类的区别 第五篇,jdk9对日期类进行了更新,写一些i自己的学习心得. 下面以一组思 ...

  4. jdk8 时间日期工具类(转)

    package com.changfu.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jav ...

  5. Java ——日期时间 日期时间相关类 随机数 定义类属性时建议使用引用数据类型

    本节重点思维导图 Date对象创建 两个构造函数: Date() ----使用当前日期和时间来初始化对象 Date(long millisec) -----接收一个参数,该参数是从1970年1月1日起 ...

  6. 时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类

    日期相关类 1.Date类:日期时间类 A.构造方法 Date(): 根据当前系统时间创建日期对象 ​ Date(Long time):根据传入的毫秒值时间创建日期对象 B.成员方法 Long get ...

  7. 11、Java 日期时间 日期工具类

    一.简介 在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题.故此,Java8引入了一套全新的日期时间处理 ...

  8. JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。

    /** * * 文 件 名: AccountDate.java * * 创建时间: 2008-11-18 * * Email : **@163.com */ import java.text.Deci ...

  9. Sybase常用时间日期函数

    Sybase日期函数日期函数getdate()得到当前时间,可以设置得到各种时间格式.datepart(日期部分,日期)取指定时间的某一个部分,年月天时分秒.datediff(日期部分,日期1,日期2 ...

随机推荐

  1. (转)Mysql 索引原理及优化

    本文内容主要来源于互联网上主流文章,只是按照个人理解稍作整合,后面附有参考链接. 一.摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引 ...

  2. 利用wget配合bash脚本同时下载多个文件

    先把需要下载的文件写入到一个文件中,命名为urls.txt,比如: http://blog.is36.com/a.jpg http://blog.is36.com/b.jpg http://blog. ...

  3. Android_Universal-Image-Load使用

    一,快速使用(确保ImageLoader只初始化一次,这样图片缓存会更加优秀.) 场景:为ImageView设置一张指定Uri的图片. 1,导包,配置联网,读写SD卡权限. 2,初始化: ImageL ...

  4. 带你了解数据库中group by的用法

    前言 本章主要介绍数据库中group by的用法,也是我们在使用数据库时非常基础的一个知识点.并且也会涉及Join的使用,关于Join的用法,可以看我写的上一篇文章:带你了解数据库中JOIN的用法如有 ...

  5. Java虚拟机(二):JVM内存模型

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问 ...

  6. xgboost使用

    xgboost的实现方式为多颗CART树,其实xgboost就是类似于随机森林,但是与随机森林不同,他不是多个子树决策的结果,CART树最后会算出一个得分,是一个值,最后算出分类的时候,是多个值结合在 ...

  7. springboot-23-aspectj日志记录及threadlocal内存泄漏

    对于请求参数的处理和响应, 如果在代码中体现日志会显得很繁琐, 普遍的解决方案是使用spring的切面方案去解决. 这儿使用的是springboot的切面: http://www.cnblogs.co ...

  8. Java中的数据验证

    原文链接:https://www.cuba-platform.com/blog/2018-10-09/945 翻译:CUBA China CUBA-Platform 官网 : https://www. ...

  9. 常常忘记但是很重要的sql语句

    一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...

  10. Json.Net组件指定/忽略序列化字段属性技巧知识点

    我们在用Json.Net序列化组件序列化类的时候,经常有这样的一个需求:指定被序列化类中的某些字段属性是要忽略的,或者是指定字段属性序列化 比如下面这个类: public class Bar { pu ...