目录
3.1 明细信息(某月天数、某日在当年的天数、Windows文件时间、时间周期数、是否为闰年、UTC时、计时周期数)
3.4 两个时间的时间差[年数、月数、日数、小时数、分钟数、秒数、毫秒数]
完整版代码请参见[运筹优化与图像处理算法编程]公众号,回复“C#日期处理”,文末有二维码
1 月份和周的中英文全称及缩写
1.1 获取当前月信息--中文/英文
//1 英文的星期信息
Console.WriteLine("Today is " + DateTime.Now.DayOfWeek);
//月份全称形式--使用dddd
Console.WriteLine("The month is " + DateTime.Now.ToString("DDDD", CultureInfo.CreateSpecificCulture("en-GB")));
//月份简写形式--使用标识ddd
Console.WriteLine("The month is " + DateTime.Now.ToString("ddd", CultureInfo.CreateSpecificCulture("en-GB")));
//月份简写形式--获取子串法
Console.WriteLine("Today is " + DateTime.Now.DayOfWeek.ToString().Substring(0,3));
//2 获取中文的星期信息
string[] WeekChn = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Console.WriteLine("今天是" + WeekChn[Convert.ToInt32(DateTime.Now.DayOfWeek)]);
1.2 获取当前周信息--中文/英文
//获取当前的月信息
//方法一:使用zh-CN
Console.WriteLine("本月是" + DateTime.Now.ToString("MMM", CultureInfo.CreateSpecificCulture("zh-CN")));
//方法二:定义月份数组
string[] MonthChn = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" };
Console.WriteLine("本月是" + MonthChn[DateTime.Now.Month-1]);
//方法三:使用en-GB,英文简写
Console.WriteLine("The month is " + DateTime.Now.ToString("MMM", CultureInfo.CreateSpecificCulture("en-GB")));
//方法四:使用MMMM得到英文全称
Console.WriteLine("The month is " + DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("en-GB")));
2UNIX时间戳(10位/13位)获取与逆转换
2.1 日期转UNIX时间戳
//获取Unix时间戳
TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0));
Console.WriteLine("10位秒版本的时间戳:"+ts.TotalSeconds);
Console.WriteLine("10位[整数]秒版本的时间戳:" + Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds));//四舍五入
Console.WriteLine("13位毫秒版本的时间戳:" + (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalMilliseconds);
//三种取整方式:四舍五入、向下取整、向上取整
Console.WriteLine("10位[整数]秒版本的时间戳:" + Math.Round((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds));//四舍五入
Console.WriteLine("10位[整数]秒版本的时间戳:" + Math.Floor((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds));//四舍五入
Console.WriteLine("10位[整数]秒版本的时间戳:" + Math.Ceiling((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds));//四舍五入
2.2.1 函数版
/// <summary>
/// 获取当前时间戳
/// </summary>
/// <param name="bflag">为真时获取10位时间戳,为假时获取13位时间戳.bool bflag = true</param>
/// <returns></returns>
public static string GetTimeStamp(bool bflag)
{
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string ret = string.Empty;
if (bflag)
ret = Convert.ToInt64(ts.TotalSeconds).ToString();
else
ret = Convert.ToInt64(ts.TotalMilliseconds).ToString();
return ret;
}
2.1.2 捕获异常版本
//生成unix格式时间
public static long getUnix()
{
try
{
TimeSpan timespan = DateTime.UtcNow - new DateTime(1970, 1, 1);
//return (long)timespan.TotalSeconds;//获取10位
return (long)timespan.TotalMilliseconds;
}
catch (Exception)
{
return -1;
}
}
2.2 UNIX时间戳转日期
2.2.1 10位转日期
private static DateTime GetTime(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime = long.Parse(timeStamp + "0000000");
TimeSpan toNow = new TimeSpan(lTime);
return dtStart.Add(toNow);
}
2.2.2 10位与13位合并版本
private static string unixTimeToTime(string timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
long lTime;
if (timeStamp.Length.Equals(10))//判断是10位
{
lTime = long.Parse(timeStamp + "0000000");
}
else
{
lTime = long.Parse(timeStamp + "0000");//13位
}
TimeSpan toNow = new TimeSpan(lTime);
DateTime daTime = dtStart.Add(toNow);
string time = daTime.ToString("yyyy-MM-dd HH:mm:ss");//转为了string格式
return time;
}
3 获取特性信息
3.1 明细信息(某月天数、某日在当年的天数、Windows文件时间、时间周期数、是否为闰年、UTC时、计时周期数)
//--------------获取特定信息----------------------------
//得到某月的天数
Console.WriteLine("本月天数为:" + DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month));
//今天是一年的第多少天
Console.WriteLine("今天是本年度的第" + DateTime.Now.DayOfYear + "天");
Console.WriteLine("现在是" + DateTime.Now.Hour + "点");
//得到当前时间的 Windows 文件时间:自公元1601年 1月 1日午夜12:00 之后经过的100纳秒间隔数, 公元协调世界时(UTC)
Console.WriteLine("此刻的 Windows 文件时间为" + DateTime.Now.ToFileTimeUtc().ToString());
Console.WriteLine("此刻的 Windows 文件时间为" + DateTime.Now.ToFileTime().ToString());
//时间周期数:一个计时周期表示一百纳秒,即一千万分之一秒
Console.WriteLine("此刻的 计时周期数为" + DateTime.Now.Ticks);
//协调世界时(UTC)等于本地时间减去 UTC 偏移量
Console.WriteLine("此刻的UTC时为:" + DateTime.Now.ToUniversalTime());
//是不是闰年
Console.WriteLine("今年是不是闰年:" + DateTime.IsLeapYear(DateTime.Now.Year));
3.2 长格式与短格式[年月、月日、年月日时分、时分]
//--------------短时间和长时间格式-----------------------
//年月日时分:g不带秒/G带秒
Console.WriteLine("短时间格式[yyyy/MM/dd hh:mm]:{0:g}", DateTime.Now);
Console.WriteLine("长时间格式[yyyy/MM/dd hh:mm:ss]:{0:G}", DateTime.Now);
//年月日时分:f不带秒/F带秒
Console.WriteLine("短时间格式[yyyy年MM月dd hh:mm]:{0:f}", DateTime.Now);
Console.WriteLine("长时间格式[yyyy年MM月dd hh:mm:ss]:{0:F}", DateTime.Now);
//年月日:D/d
Console.WriteLine("短时间格式[年/月/日]:" + DateTime.Now.ToShortDateString());
Console.WriteLine("长时间格式[*年*月*日]:" + DateTime.Now.ToLongDateString());
Console.WriteLine("短时间格式[年/月/日]:{0:d}", DateTime.Now);
Console.WriteLine("长时间格式[*年*月*日]:{0:D}", DateTime.Now);
//月日格式
Console.WriteLine(String.Format("短时间格式[月/日]:{0:M}",DateTime.Now));
Console.WriteLine(String.Format("长时间格式[月/日]:{0:m}",DateTime.Now));
//时分:t不带秒/T带秒
Console.WriteLine(String.Format("短时间格式[时:分]: {0:t}", DateTime.Now));
Console.WriteLine(String.Format("长时间格式[时:分]: {0:T}", DateTime.Now));
Console.WriteLine("长时间格式[时:分]: " + DateTime.Now.ToLongTimeString());
Console.WriteLine("短时间格式[时:分]: " + DateTime.Now.ToShortTimeString());
//年月格式
Console.WriteLine(String.Format("短时间格式[年月]: {0:y}", DateTime.Now));
Console.WriteLine(String.Format("长时间格式[年月]: {0:Y}", DateTime.Now));
结果
3.3 两个时间比较DateTime.Compare
//两个时间比较:第一个时间早于(-1)等于(0)晚于(1)第二个时间
Console.WriteLine(DateTime.Compare(new DateTime(2020,2,14,0,0,0), DateTime.Now));
Console.WriteLine(DateTime.Compare(DateTime.Now, DateTime.Now));
Console.WriteLine(DateTime.Compare(new DateTime(2019, 2, 14, 0, 0, 0), DateTime.Now));
3.4 两个时间的时间差[年数、月数、日数、小时数、分钟数、秒数、毫秒数]
//------------两个时间的时间差
TimeSpan DateDif = new DateTime(2020,2,14,0,0,0) - DateTime.Now;
Console.WriteLine("今天到2020年2月14日的间隔为" + DateDif.ToString());
Console.WriteLine("今天到2020年2月14日的间隔的秒数" + DateDif.TotalSeconds);
Console.WriteLine("今天到2020年2月14日的间隔的毫秒数" + DateDif.TotalMilliseconds);
Console.WriteLine("今天到2020年2月14日的间隔的分钟数" + DateDif.TotalMinutes);
Console.WriteLine("今天到2020年2月14日的间隔的小时数" + DateDif.TotalHours);
Console.WriteLine("今天到2020年2月14日的间隔的天数" + DateDif.TotalDays);
DateTime dt = new DateTime(2010,1,1,0,0,0);
//相隔的年数
int YearDif = DateTime.Now.Year - dt.Year;
Console.WriteLine("今天到2010年2月14日到今天已经过去了" + YearDif + "年");
//相隔的月数
int MonthDif = (DateTime.Now.Year - dt.Year) * 12 + (DateTime.Now.Month - dt.Month);
Console.WriteLine("今天到2010年2月14日到今天已经过去了" + MonthDif + "个月");
3.5 自定义的时间格式[y/M/d/h/m/s]
注意:HH代表的是24小时制,dd表示12小时之
Console.WriteLine("今天是" + DateTime.Now.ToString());
Console.WriteLine("现在是" + DateTime.Now.Hour + "点");
Console.WriteLine(DateTime.Now.ToLocalTime());//获取本地时间
//------------自己控制需要的时间格式
Console.WriteLine("今年是" + DateTime.Now.ToString("yyyy年MM"));
Console.WriteLine("本月是" + DateTime.Now.ToString("yyyy年MM月"));
Console.WriteLine("今天是" + DateTime.Now.ToString("yyyy年MM月dd日"));
Console.WriteLine("现在是[12小时制]" + DateTime.Now.ToString("yyyy年MM月dd日hh点"));
Console.WriteLine("现在是[24小时制]" + DateTime.Now.ToString("yyyy年MM月dd日HH点"));
Console.WriteLine("现在是" + DateTime.Now.ToString("yyyy年MM月dd日hh点mm分"));
Console.WriteLine("现在是" + DateTime.Now.ToString("yyyy年MM月dd日hh点mm分ss秒"));
如果喜欢我的分享,可关注以下两个公众帐号