asp.net(C#)常用时间日期处理类
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#)常用时间日期处理类的更多相关文章
- asp.net(C#)实现功能强大的时间日期处理类完整实例
作者:smartsmile2012 字体:[增加 减小] 类型:转载 时间:2016-06-30我要评论 这篇文章主要介绍了asp.net(C#)实现功能强大的时间日期处理类,封装了针对日期与时间的各 ...
- asp.net中的时间日期选择控件
asp.net中的时间日期选择控件 Posted on 2008-07-17 17:37 飛雪飄寒 阅读(22922) 评论(6) 编辑 收藏 在系统中经常需要进行时间日期选择(比如查询时间范 ...
- java编程--04比较几个常用的日期时间相关类的区别
第一篇,介绍日期的比较 第二篇,介绍日期的格式化 第三篇,介绍关于日期常用的计算 第四篇,比较几个常用的日期时间相关类的区别 第五篇,jdk9对日期类进行了更新,写一些i自己的学习心得. 下面以一组思 ...
- jdk8 时间日期工具类(转)
package com.changfu.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jav ...
- Java ——日期时间 日期时间相关类 随机数 定义类属性时建议使用引用数据类型
本节重点思维导图 Date对象创建 两个构造函数: Date() ----使用当前日期和时间来初始化对象 Date(long millisec) -----接收一个参数,该参数是从1970年1月1日起 ...
- 时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类
日期相关类 1.Date类:日期时间类 A.构造方法 Date(): 根据当前系统时间创建日期对象 Date(Long time):根据传入的毫秒值时间创建日期对象 B.成员方法 Long get ...
- 11、Java 日期时间 日期工具类
一.简介 在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题.故此,Java8引入了一套全新的日期时间处理 ...
- JAVA时间日期处理类,主要用来遍历两个日期之间的每一天。
/** * * 文 件 名: AccountDate.java * * 创建时间: 2008-11-18 * * Email : **@163.com */ import java.text.Deci ...
- Sybase常用时间日期函数
Sybase日期函数日期函数getdate()得到当前时间,可以设置得到各种时间格式.datepart(日期部分,日期)取指定时间的某一个部分,年月天时分秒.datediff(日期部分,日期1,日期2 ...
随机推荐
- photoshop切图介绍 && photoshop下载与破解
第一部分:界面设置 1.点击“文件-新建”(或者ctrl+n)打开一个新建对话框.名称可随意填写.“预设”设置为自定,“宽度”一般选择1920,“单位”选为像素.“高度”可选择为2000,“单位”选为 ...
- Android 开发工具类 21_SAXForHandler
解析 XML 有两种形式: 1.XMLReader XMLReaser xmlReader = saxParser.getXMLReader(); xmlReadeer.setContentHandl ...
- Redis笔记(四):Redis事务支持
Redis 事务 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存. 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其 ...
- Tensorflow 方法记录
1.tf.convert_to_tensor:传入的list必须是一个有固定长度的list,如果为2维的list,第二维的list的长度必须是固定. 2.tf.layers.conv1d(),默认宽卷 ...
- 笔记四:python乱码深度剖析二
一:学习内容 获取更改系统编码 判断字符的编码类型 文件存储和读取的编码 二:获取更改系统编码 1. 获取系统编码 import sys print sys.getdefaultencoding() ...
- BSDL
BSDL(边界扫描描述语言)文件是使用边界扫描进行电路板级和系统级测试与在系统编程所必需的. BSDL 文件是描述一个 IC 中的 IEEE 1149.1 或 JTAG 设计电子数据表,这些文件由 I ...
- c# 键值对照表
虚拟键值表 虚拟键 十六进制值 十进制值 相应键盘或鼠标键 VK_LBUTTON 1 1 鼠标左键 VK_RBUTTON 2 2 鼠标右键 VK_CANCEL 3 3 Ctrl-Break键 VK_M ...
- Java利用反射取得类的所有信息
Java中可以利用反射获取类的名称.构造函数.属性.方法.也就是说可以通过反射可以取得类的所有信息(不管该成员是否封装为private). 如有下面的Dept类定义: package org.lyk. ...
- 啰里吧嗦式讲解java静态代理动态代理模式
一.为啥写这个 文章写的比较啰嗦,有些东西可以不看,因为想看懂框架, 想了解SSH或者SSM框架的设计原理和设计思路, 又去重新看了一遍反射和注解, 然后看别人的博客说想要看懂框架得先看懂设计模式,于 ...
- 【转】java线程池
一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后加入了java.util. ...