using System;
namespace Beisen.TalentPortal.Infrastructure.Helper
{
public static class DateTimeExtensions
{
public static int MonthsBetweentwoDates(DateTime startTime,DateTime endTime)
{
int yearNum = (endTime.Year - startTime.Year) * 12;
int monthNum = endTime.Month - startTime.Month;
int dayNum = endTime.Day - startTime.Day > 0 ? 1 : 0;
return yearNum + monthNum + dayNum;
}
public static string FormatDate(this DateTime dateTime)
{
var now = DateTime.Now;
if (now.Year == dateTime.Year)
{
if (now.Date == dateTime.Date)
{
TimeSpan time = now - dateTime;
if (time.Hours < 24 && time.Hours >= 1)
{
return string.Format("{0}小时前", time.Hours);
}
else if (time.Minutes < 60 && time.Minutes >= 1)
{
return string.Format("{0}分钟前", time.Minutes);
}
else if (time.Seconds < 60 && time.Seconds > 0)
{
return string.Format("{0}秒前", time.Seconds);
}
else
{
return "刚刚";
}
}
else if (now.Date == dateTime.Date.AddDays(1))
{
return string.Format("昨天 {0}", dateTime.ToString("HH:mm"));
}
else if (now.Date == dateTime.Date.AddDays(2))
{
return string.Format("前天 {0}", dateTime.ToString("HH:mm"));
}
else
{
return string.Format("{0}月{1}日 {2}", dateTime.Month, dateTime.Day, dateTime.ToString("HH:mm"));
}
}
else
{
return string.Format("{3}年{0}月{1}日 {2}", dateTime.Month, dateTime.Day, dateTime.ToString("HH:mm"), dateTime.Year);
}
return string.Empty;
}
/// <summary>
/// 转换日期为指定的格式 yyyy/MM/dd HH:mm:ss
/// </summary>
public static string FormatDateCn(this DateTime dateTime)
{
return dateTime.ToString("yyyy/MM/dd HH:mm:ss");
}
/// <summary>
/// 转换日期为指定的格式 yyyy/MM/dd HH:mm:ss
/// </summary>
public static string FormatDateCn(this string dateTime)
{
if (string.IsNullOrWhiteSpace(dateTime))
return null;
DateTime time;
DateTime.TryParse(dateTime, out time);
return time.ToString("yyyy/MM/dd HH:mm:ss", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
/// <summary>
/// 转换日期为指定的格式 yyyy/MM/dd HH:mm:ss
/// </summary>
public static string FormatDateCn(this DateTime? dateTime)
{
if (dateTime == null || !dateTime.HasValue)
return "";
return dateTime.Value.ToString("yyyy/MM/dd HH:mm:ss");
}
/// <summary>
/// 转换日期为指定的格式 yyyy/MM/dd HH:mm:ss
/// </summary>
public static string FormatShortDate(this DateTime dateTime)
{
return dateTime.ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
/// <summary>
/// 转换日期为指定的格式 yyyy/MM/dd HH:mm:ss
/// </summary>
public static string FormatShortDate(this string dateTime)
{
if (string.IsNullOrWhiteSpace(dateTime))
return null;
DateTime time;
DateTime.TryParse(dateTime, out time);
return time.ToString("yyyy/MM/dd", System.Globalization.DateTimeFormatInfo.InvariantInfo);
}
/// <summary>
/// 转换日期为指定的格式 yyyy/MM/dd HH:mm:ss
/// </summary>
public static string FormatShortDateCn(this DateTime? dateTime)
{
if (dateTime == null || !dateTime.HasValue)
return "";
return dateTime.Value.ToString("yyyy/MM/dd");
}
/// <summary>
/// 所在周的起止时间
/// </summary>
/// <param name="dateTime"></param>
/// <returns></returns>
public static DateTime[] DatesIncludeDay(this DateTime dateTime)
{
DateTime[] dts = new DateTime[2];
int dayofweek = DayOfWeek(dateTime);
if(dayofweek==0)
{
dts[0] = dateTime.AddDays(-7);
dts[1] = dateTime.AddDays(6);
}
else
{
dts[0] = dateTime.AddDays(-dayofweek);
dts[1] = dateTime.AddDays(6 - dayofweek);
}
return dts;
}
/// <summary>
/// 计算星期几,转换为数字
/// </summary>
/// <param name="dt">某天的日期</param>
/// <returns></returns>
private static int DayOfWeek(DateTime dt)
{
string strDayOfWeek = dt.DayOfWeek.ToString().ToLower();
int intDayOfWeek = 0;
switch (strDayOfWeek)
{
case "monday":
intDayOfWeek = 1;
break;
case "tuesday":
intDayOfWeek = 2;
break;
case "wednesday":
intDayOfWeek = 3;
break;
case "thursday":
intDayOfWeek = 4;
break;
case "friday":
intDayOfWeek = 5;
break;
case "saturday":
intDayOfWeek = 6;
break;
case "sunday":
intDayOfWeek = 0;
break;
}
return intDayOfWeek;
}
/// <summary>
/// 计算星期几,转换为汉字
/// </summary>
/// <param name="dt">某天的日期</param>
/// <returns></returns>
public static string DayOfChWeek(this DateTime dt)
{
var strDayOfWeek = dt.DayOfWeek;
switch ((int)strDayOfWeek)
{
case 1:
return "一";
case 2:
return "二";
case 3:
return "三";
case 4:
return "四";
case 5:
return "五";
case 6:
return "六";
case 0:
return "日";
}
return string.Empty;
}
/// <summary>
/// DateTime时间格式转换为Unix时间戳格式
/// </summary>
/// <param name="time"> DateTime时间格式</param>
/// <returns>Unix时间戳格式</returns>
public static int ConvertDateTimeInt(this DateTime time)
{
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
return (int)(time - startTime).TotalSeconds;
}
}
}
以上是用的后台程序进行的计算,后来发现了一个更好用的前台JS 插件:moment
网址:http://momentjs.com
相关推荐
基于LABVIEW的一个曲线上升沿时间计算
适合各类请假 时间计算,除去双休,计算固定工作日时间数,可以自定义上班时间 午休时间 下班时间,非常好用的时间计算。
各种时间计算模型,各种时间转换格式,获取各种格式的时间,一一尽有
RC延时电路的延时时间计算公式,RC电路的引用及计算
本文详细叙述了FPGA选择SPI启动时的启动时间计算方法。
日出日落时间计算.html (js) js脚本
立林门禁时间计算.rar
串口时间计算
根据经纬度和时间 计算太阳高度角和方位角
智能电能表的起动时间、潜动时间计算小工具。
论文研究-基于活动重叠的DSM项目时间计算及排序优化.pdf, 研发活动之间常存在顺序重叠和反馈重叠,重叠并行性会加快项目的进度,但又存在返工风险.为此,采用设计结构矩阵...
本文主要讲了一下关于stm32定时器时间计算方法。
包含几乎全部可以用到的时间计算方法 时间差 每月星期 每月第几个星期几等等
Profibus循环时间计算,对控制的时间有帮助。
镍镉电池和镍氢电池充电时间计算2009-05-04 12:45镍镉电池和镍氢电池充电时间计算一、充电常识 在这里,首先要说明的是,充电是使用充电电池的重要步骤。适当合理的充电对延长电池寿命很有好处,而野蛮胡乱充电将...
计算串口发送数据所需要的时间
RC电路的时间常数:τ=RC充电时,uc=U×[1-e(-t/τ)] U是电源电压放电时,uc=Uo×e(-t/τ) Uo是放电前电容上电压RL电路的时间常数:τ=L/RLC电路接直流,i=Io[1-e(-t/τ)] Io是最终稳定电流LC电路的短路,i=Io×e(-t...
UPS蓄电池后备时间计算方法,让你充分了解蓄电池的工作和动态,做到“知己知彼”...
随经纬度变化的日出日落时间计算方法 需要输入经纬和时间
日升日落时间计算,采用excel表格计算方式。