using System;
using System.Collections.Generic;
using System.Text;
namespace Mini.Common
{
public static class DateTimeTool
{
///
/// 获取指定日期所在周的第一天,星期天为第一天
///
///
///
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;
}
///
/// 获取指定日期所在周的第一天,星期一为第一天
///
///
///
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;
}
///
/// 获取指定日期所在周的最后一天,星期六为最后一天
///
///
///
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;
}
///
/// 获取指定日期所在周的最后一天,星期天为最后一天
///
///
///
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;
}
///
/// 获取指定日期的月份第一天
///
///
///
public static DateTime GetDateTimeMonthFirstDay(DateTime dateTime)
{
if (dateTime == null)
{
dateTime = DateTime.Now;
}
return new DateTime(dateTime.Year, dateTime.Month, 1);
}
///
/// 获取指定月份最后一天
///
///
///
public static DateTime GetDateTimeMonthLastDay(DateTime dateTime)
{
int day = DateTime.DaysInMonth(dateTime.Year, dateTime.Month);
return new DateTime(dateTime.Year, dateTime.Month, day);
}
///
/// 时间戳转为C#格式时间
///
///
///
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;
}
///
/// 时间戳转为C#格式时间
///
///
///
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);
}
///
/// DateTime时间格式转换为Unix时间戳格式
///
///
///
public static int ConvertDateTimeInt(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
return (int)(time - startTime).TotalSeconds;
}
}
}