165 lines
5.1 KiB
C#
165 lines
5.1 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace DG.Tool
|
||
{
|
||
public static class DateTimeTool
|
||
{
|
||
/// <summary>
|
||
/// 获取指定日期所在周的第一天,星期天为第一天
|
||
/// </summary>
|
||
/// <param name="dateTime"></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetDateTimeWeekFirstDaySun(DateTime dateTime)
|
||
{
|
||
DateTime firstWeekDay = DateTime.Now;
|
||
try
|
||
{
|
||
//得到是星期几,然后从当前日期减去相应天数
|
||
int weeknow = Convert.ToInt32(dateTime.DayOfWeek);
|
||
|
||
int daydiff = (-1) * weeknow;
|
||
|
||
firstWeekDay = dateTime.AddDays(daydiff);
|
||
}
|
||
catch { }
|
||
|
||
return firstWeekDay;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取指定日期所在周的第一天,星期一为第一天
|
||
/// </summary>
|
||
/// <param name="dateTime"></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetDateTimeWeekFirstDayMon(DateTime dateTime)
|
||
{
|
||
DateTime firstWeekDay = DateTime.Now;
|
||
|
||
try
|
||
{
|
||
int weeknow = Convert.ToInt32(dateTime.DayOfWeek);
|
||
|
||
//星期一为第一天,weeknow等于0时,要向前推6天。
|
||
weeknow = (weeknow == 0 ? (7 - 1) : (weeknow - 1));
|
||
|
||
int daydiff = (-1) * weeknow;
|
||
|
||
firstWeekDay = dateTime.AddDays(daydiff);
|
||
}
|
||
catch { }
|
||
|
||
return firstWeekDay;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取指定日期所在周的最后一天,星期六为最后一天
|
||
/// </summary>
|
||
/// <param name="dateTime"></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetDateTimeWeekLastDaySat(DateTime dateTime)
|
||
{
|
||
DateTime lastWeekDay = DateTime.Now;
|
||
|
||
try
|
||
{
|
||
int weeknow = Convert.ToInt32(dateTime.DayOfWeek);
|
||
|
||
int daydiff = (7 - weeknow) - 1;
|
||
|
||
lastWeekDay = dateTime.AddDays(daydiff);
|
||
|
||
}
|
||
catch { }
|
||
|
||
return lastWeekDay;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取指定日期所在周的最后一天,星期天为最后一天
|
||
/// </summary>
|
||
/// <param name="dateTime"></param>
|
||
/// <returns></returns>
|
||
|
||
public static DateTime GetDateTimeWeekLastDaySun(DateTime dateTime)
|
||
{
|
||
DateTime lastWeekDay = DateTime.Now;
|
||
|
||
try
|
||
{
|
||
int weeknow = Convert.ToInt32(dateTime.DayOfWeek);
|
||
|
||
weeknow = (weeknow == 0 ? 7 : weeknow);
|
||
|
||
int daydiff = (7 - weeknow);
|
||
|
||
lastWeekDay = dateTime.AddDays(daydiff);
|
||
}
|
||
catch { }
|
||
|
||
return lastWeekDay;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取指定日期的月份第一天
|
||
/// </summary>
|
||
/// <param name="dateTime"></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetDateTimeMonthFirstDay(DateTime dateTime)
|
||
{
|
||
if (dateTime == null)
|
||
{
|
||
dateTime = DateTime.Now;
|
||
}
|
||
return new DateTime(dateTime.Year, dateTime.Month, 1);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取指定月份最后一天
|
||
/// </summary>
|
||
/// <param name="dateTime"></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetDateTimeMonthLastDay(DateTime dateTime)
|
||
{
|
||
int day = DateTime.DaysInMonth(dateTime.Year, dateTime.Month);
|
||
|
||
return new DateTime(dateTime.Year, dateTime.Month, day);
|
||
}
|
||
/// <summary>
|
||
/// 时间戳转为C#格式时间
|
||
/// </summary>
|
||
/// <param name=”timeStamp”></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetTimeFromLinuxTime(long timeStamp)
|
||
{
|
||
System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
|
||
dtDateTime = dtDateTime.AddMilliseconds(timeStamp).ToLocalTime();
|
||
return dtDateTime;
|
||
}
|
||
/// <summary>
|
||
/// 时间戳转为C#格式时间
|
||
/// </summary>
|
||
/// <param name=”timeStamp”></param>
|
||
/// <returns></returns>
|
||
public static DateTime GetTimeFromLinuxShortTime(long timeStamp)
|
||
{
|
||
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
|
||
long lTime = long.Parse(timeStamp.ToString() + "0000000");
|
||
TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow);
|
||
}
|
||
/// <summary>
|
||
/// DateTime时间格式转换为Unix时间戳格式
|
||
/// </summary>
|
||
/// <param name=”time”></param>
|
||
/// <returns></returns>
|
||
public static int ConvertDateTimeInt(System.DateTime time)
|
||
{
|
||
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
|
||
return (int)(time - startTime).TotalSeconds;
|
||
}
|
||
}
|
||
}
|