public static class DateTimeEx
{
/// <summary>
/// 得到中文形式的日期
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetChineseDate(DateTime dt)
{
return dt.Year.ToString() + "年" + dt.Month.ToString() + "月" + dt.Day.ToString() + "日";
}

/// <summary>
/// 得到中文形式的时间
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetChineseTime(DateTime dt)
{
return dt.Hour.ToString() + "点" + dt.Minute.ToString() + "分" + dt.Second.ToString() + "秒";
}

/// <summary>
/// 得到中文形式的日期时间
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string GetChineseDateTime(DateTime dt)
{
return GetChineseDate(dt) + GetChineseTime(dt);
}

/// <summary>
/// 得到某月的最后一天
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回最后一天的日期</returns>
public static DateTime GetLastDateOfMonth(DateTime dt)
{
return GetLastDateOfMonth(dt.Year, dt.Month);
}

/// <summary>
/// 得到某月的最后一天
/// </summary>
/// <param name="year">年</param>
/// <param name="month">月</param>
/// <returns>返回最后一天的日期</returns>
public static DateTime GetLastDateOfMonth(int year, int month)
{
if (month < 1) month = 1;
if (month > 12) month = 12;
return (new DateTime(year, month, 1)).AddMonths(1).AddDays(-1);
}

/// <summary>
/// 得到某月的最后一豪秒
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回最后一豪秒的日期</returns>
public static DateTime GetLastDateTimeOfMonth(DateTime dt)
{
return GetLastDateTimeOfMonth(dt.Year, dt.Month);
}

/// <summary>
/// 得到某月的最后一豪秒
/// </summary>
/// <param name="year">年</param>
/// <param name="month">月</param>
/// <returns>返回最后一豪秒的日期</returns>
public static DateTime GetLastDateTimeOfMonth(int year, int month)
{
if (month < 1) month = 1;
if (month > 12) month = 12;
return (new DateTime(year, month, 1)).AddMonths(1).AddSeconds(-1);
}

/// <summary>
/// 得到某月的第一天
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回第一天的日期</returns>
public static DateTime GetFirstDateOfMonth(DateTime dt)
{
return GetFirstDateOfMonth(dt.Year, dt.Month);
}

/// <summary>
/// 得到某月的第一天
/// </summary>
/// <param name="year">年</param>
/// <param name="month">月</param>
/// <returns>返回第一天的日期</returns>
public static DateTime GetFirstDateOfMonth(int year, int month)
{
if (month < 1) month = 1;
if (month > 12) month = 12;
return new DateTime(year, month, 1);
}

/// <summary>
/// 得到某年的第一天
/// </summary>
/// <param name="year">年</param>
/// <returns>返回第一天的日期</returns>
public static DateTime GetFirstDateOfYear(int year)
{
return new DateTime(year, 1, 1);
}

/// <summary>
/// 得到某年的第一天
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回第一天的日期</returns>
public static DateTime GetFirstDateOfYear(DateTime dt)
{
return GetFirstDateOfYear(dt.Year);
}

/// <summary>
/// 得到某年的最后一天
/// </summary>
/// <param name="year">年</param>
/// <returns>返回最后一天的日期</returns>
public static DateTime GetLastDateOfYear(int year)
{
return new DateTime(year, 12, 31);
}

/// <summary>
/// 得到某年的最后一天
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回最后一天的日期</returns>
public static DateTime GetLastDateOfYear(DateTime dt)
{
return GetLastDateOfYear(dt.Year);
}

/// <summary>
/// 得到某年的最后一毫秒
/// </summary>
/// <param name="year">年</param>
/// <returns>返回最后一毫秒的日期时间对象</returns>
public static DateTime GetLastDateTimeOfYear(int year)
{
return new DateTime(year + 1, 1, 1).AddSeconds(-1);
}

/// <summary>
/// 得到某年的最后一毫秒
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回最后一毫秒的日期时间对象</returns>
public static DateTime GetLastDateTimeOfYear(DateTime dt)
{
return GetLastDateTimeOfYear(dt.Year);
}

/// <summary>
/// 计算某段时间内,每月的天数
/// </summary>
/// <param name="beginTime">开始时间</param>
/// <param name="endTime">结束时间</param>
/// <returns>返回天数</returns>
public static float GetDaysOfMonth(DateTime beginTime, DateTime endTime)
{
float days;
if (beginTime.Year == endTime.Year && beginTime.Month == endTime.Month)
{
//如果是同一个月,返回这个月的天数
DateTime t1 = new DateTime(beginTime.Year, beginTime.Month, 1);
DateTime t2 = t1.AddMonths(1);
TimeSpan interval = t2.Subtract(t1);
days = interval.Days;
}
else if (beginTime.Year == endTime.Year)
{
//如果是同一年,返回这一年的平均月天数
DateTime t1 = new DateTime(beginTime.Year, 1, 1);
DateTime t2 = new DateTime(beginTime.Year + 1, 1, 1);
TimeSpan interval = t2.Subtract(t1);
days = (float)(1.0 * interval.Days / 12);
}
else
{
//否则返回每4年的平均月天数
days = (float)((365.0 * 3 + 366) / 48);
}
return days;
}

/// <summary>
/// 得到某日所在周的第一天
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回某日所在周的第一天</returns>
public static DateTime GetFirstDateOfWeek(DateTime dt)
{
int days = (int)dt.DayOfWeek;
TimeSpan ts = new TimeSpan(days, 0, 0, 0);
return dt.Date - ts;
}

/// <summary>
/// 得到某日所在周的最后一天
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回某日所在周的最后一天</returns>
public static DateTime GetLastDateOfWeek(DateTime dt)
{
int days = 6 - (int)dt.DayOfWeek;
TimeSpan ts = new TimeSpan(days, 0, 0, 0);
return dt.Date + ts;
}

/// <summary>
/// 得到某日所在周的最后一豪秒
/// </summary>
/// <param name="dt">日期</param>
/// <returns>返回某日所在周的最后一毫秒</returns>
public static DateTime GetLastDateTimeOfWeek(DateTime dt)
{
int days = 6 - (int)dt.DayOfWeek;
TimeSpan ts = new TimeSpan(days, 0, 0, 0);
DateTime lastDate = dt.Date + ts;
return new DateTime(lastDate.Year, lastDate.Month, lastDate.Day, 23, 59, 59, 59);
}

/// <summary>
/// 得到本月已经过去的天数
/// </summary>
/// <returns>返回本月已经过去的天数</returns>
public static int GetThisMonthPastDays()
{
int days;
DateTime today = DateTime.Today;
DateTime firstDayOfCurMonth = DateTimeEx.GetFirstDateOfMonth(today);
TimeSpan ts = today - firstDayOfCurMonth;
days = (int)ts.TotalDays;
if (days < 1)
days = 1;
return days;
}

/// <summary>
/// 得到本年已经过去的天数
/// </summary>
/// <returns>返回本年已经过去的天数</returns>
public static int GetThisYearPastDays()
{
int days;
DateTime today = DateTime.Today;
DateTime firstDayOfCurYear = DateTimeEx.GetFirstDateOfYear(today);
TimeSpan ts = today - firstDayOfCurYear;
days = (int)ts.TotalDays;
if (days < 1) days = 1;
return days;
}

/// <summary>
/// 得到本周已经过去的天数
/// </summary>
/// <returns>返回本周已经过去的天数</returns>
public static int GetThisWeekPastDays()
{
int days;
DateTime today = DateTime.Today;
DateTime firstDayOfCurWeek = DateTimeEx.GetFirstDateOfWeek(today);
TimeSpan ts = today - firstDayOfCurWeek;
days = (int)ts.TotalDays;
if (days < 1) days = 1;
return days;
}

/// <summary>
/// 得到某日所在季度的第一天
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime GetFirstDateOfQuarter(DateTime dt)
{
int year = dt.Year;
int month;
int dtMonth = dt.Month;
if (dtMonth == 1 || dtMonth == 2 || dtMonth == 3)
month = 1;
else if (dtMonth == 4 || dtMonth == 5 || dtMonth == 6)
month = 4;
else if (dtMonth == 7 || dtMonth == 8 || dtMonth == 9)
month = 7;
else
month = 10;
return new DateTime(year, month, 1);
}

/// <summary>
/// 得到某日所在季度的最后一天
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime GetLastDateOfQuarter(DateTime dt)
{
return GetFirstDateOfQuarter(dt).AddMonths(3).AddDays(-1); //即下一季度第1天减1天
}

/// <summary>
/// 得到某日所在季度的最后一天的最后一秒
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static DateTime GetLastDateTimeOfQuarter(DateTime dt)
{
return GetFirstDateOfQuarter(dt).AddMonths(3).AddSeconds(-1); //即下一季度第1天减1秒
}

/// <summary>
/// 转换成中文形式的时间间隔“xx天xx时xx分xx秒”
/// </summary>
/// <param name="ts">时间间隔</param>
/// <param name="showSeconds">是否显示秒</param>
/// <returns>返回中文形式的时间间隔</returns>
public static string GetChineseTimeSpan(TimeSpan ts, bool showSeconds)
{
int days, hours, minutes, seconds;
StringBuilder sbTs = new StringBuilder();
if (ts.Ticks == 0)
{
days = 0;
hours = 0;
minutes = 0;
seconds = 0;
}
else
{
//如果时间间隔为负,将其转成正数
if (ts.Ticks < 0)
{
sbTs.Append("-");
ts = ts.Negate();
}
//计算天、小时、分钟和秒
days = ts.Days;
if (days != 0)
ts = ts.Subtract(new TimeSpan(days, 0, 0, 0));
hours = ts.Hours;
if (hours != 0)
ts = ts.Subtract(new TimeSpan(0, hours, 0, 0));
minutes = ts.Minutes;
if (minutes != 0)
ts = ts.Subtract(new TimeSpan(0, 0, minutes, 0));
seconds = ts.Seconds;
}
sbTs.AppendFormat("{0}天{1}时{2}分{3}", days, hours, minutes, showSeconds ? (seconds.ToString() + "秒") : "");
return sbTs.ToString();
}

/// <summary>
/// 获取日期所在年的周数
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static int GetWeekOfYear(DateTime dt)
{
DateTime yearD = new DateTime(dt.Year, 1, 1);
int diff = Convert.ToInt32(yearD.DayOfWeek);
int dayOfYear = dt.DayOfYear + diff;
return (int)(Math.Ceiling(dayOfYear / 7.0));
}
}

DatetimeHelper,时间帮助类的更多相关文章

  1. 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...

  2. [时间操作] C#DateFormat时间帮助类 (转载)

    点击下载 DateFormat.rar 主要功能如下 返回每月的第一天和最后一天 看下面代码吧 /// <summary> /// 类说明:时间操作类 /// 编 码 人:苏飞 /// 联 ...

  3. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  4. 时间通用类 datetime

    /// <summary> /// 时间通用类 /// </summary> public class DateTimeGeneral { /// <summary> ...

  5. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

  6. JavaScript时间操作工具类

    /** * 时间操作工具类 * * @author zwq * */ var TimeFrameUtil = { /** * 格式化日期 * @param date {Date} 日期 * @para ...

  7. 超详细的Java时间工具类

    package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...

  8. cocos代码研究(6)有限时间动作类(FiniteTimeAction)学习笔记

    理论部分 有限时间动作类继承自Action类,被 ActionInstant(即时动作) , 以及 ActionInterval(持续动作) 继承. 即时动作是会立即被执行的动作,被 CallFunc ...

  9. Linux 时间日期类、搜索查找类、 压缩和解压类指令

    l 时间日期类 date指令-显示当前日期 基本语法 1) date (功能描述:显示当前时间) 2) date +%Y (功能描述:显示当前年份) 3) date +%m (功能描述:显示当前月份) ...

  10. java时间工具类

    在项目中,很多地方需要根据时间获取相应的数据,将时间格式化,或者时间比较等相关操作.一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度. /** * @author: lxw * @Da ...

随机推荐

  1. ccf-路径解析201604-3

    C++没有split函数 但是有一个简单的方法,利用stringstream构建; 然后这道题就很简单啦 还要注意不能用cin 因为有空行的存在 #include <bits/stdc++.h& ...

  2. 数据库中无数据时查询数据为空,但出现空指针异常的解决方案(转载https://blueskator.iteye.com/blog/2096026)

    异常:java.lang.NullPointerException 解决方案: try{ hotelImageList = ihotelImgManager.query(hiqc); }catch(E ...

  3. JAVA乐观锁、悲观锁实现

    一.名词解释 1.悲观锁:认为每次对数据库的操作(查询.修改)都是不安全的,因此每次操作都会把这条数据锁掉,直到本次操作完毕释放该锁 2.乐观锁:查询数据的时候总是认为是安全的,不会锁数据:等到更新数 ...

  4. informix 常见系统表

    systables:描述数据库中的每张表:syscolumns:描述数据库中表的列:sysindexes:描述数据库中列的索引:sysfragments:存储了分段索引的片段信息:sysfragaut ...

  5. spring 动态代理

    突然想到AOP,就简单回忆一下动态代理.1.什么是动态代理? 假如有个用户有增删该查4个方法,如果要对用户操作后进行日志记录,可能会有人说直接在增删改查后做日志记录就行. 一旦我想在用户操作之前加一个 ...

  6. 机器学习基础一(TP,TN,FP,FN等)

    TP:预测为正向(P),实际上预测正确(T),即判断为正向的正确率 TN:预测为负向(N),实际上预测正确(T),即判断为负向的正确率 FP:预测为正向(P),实际上预测错误(F),误报率,即把负向判 ...

  7. 可持久化trie学习笔记

    其实很早之前就想学习可持久化trie,不过由于换队友等情况,还是优先去学数论和计算几何,今天突然心血来潮学了一发可持久化trie,感觉还是蛮简单的,不过由于自己很长时间没写过可持久化了,都快忘了是个什 ...

  8. 打印杨辉三角—Python

    b=[] for i in range(0,9): c=[] for j in range(0,i): if j==0: c.append(b[i-1][j]) if j<=i-2:#执行完第一 ...

  9. EBS查询在线用户

    转自:https://www.cnblogs.com/benio/archive/2011/03/10/1979417.html SELECT u.user_name, app.application ...

  10. 个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)

    先上效果图,不要在意用来当素材的图片: 在搜索相关资料的时候,查到有两种实现方式:一是使用JavaScript,二是使用CSS3中的Animation(动画),这里使用的是CSS3中的Animatio ...