# region 日期时间处理逻辑
// 将n转化为2位符号数, 0-99 转化为00-99
public static string TwoChar(int n)
{
return (n < 10 ? "0" : "") + n;
}
// 获取DateTime的日期部分:2005-06-07
public static string getDate(DateTime T)
{
return T.Year + "-" + TwoChar(T.Month) + "-" + TwoChar(T.Day);
}
// 获取DateTime的时间部分:12:23:34
public static string getTime(DateTime T)
{
return TwoChar(T.Hour) + ":" + TwoChar(T.Minute) + ":" + TwoChar(T.Second);
}
// 将DateTime日期转化为固定的日期格式: 2005-06-07 12:23:34
public static string ToString(DateTime T)
{
return getDate(T) + " " + getTime(T);
//DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
}
// 获取当前时间如: 2005-06-07 12:23:34
public static string TimeNow()
{
return ToString(DateTime.Now);
}
// 获取相对于当前时间,days天后的日期,获取date = "2005-6-7 12:23:34"
public static string TimeNowAdd(int days)
{
DateTime Now = DateTime.Now;
Now = Now.AddDays(days);
string Time = ToString(Now);
return Time; // "2016-5-26 12:23:34"
}
// 根据当前日期获取 格式20160101类型的日期
public static string DateString()
{
return getDate(DateTime.Now).Replace("-", "");
}
// DateTime.Compare(time1, time2);
// 从字符串获取日期
//string mytime = "2005-6-7 12:23:34";
public static DateTime parseDate(string date)
{
//IFormatProvider culture = new System.Globalization.CultureInfo("zh-CN", true);
//string[] expectedFormats = { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-d HH:mm:ss", "yyyy-M-dd HH:mm:ss", "yyyy-M-dd HH:mm:ss" };
//DateTime dateTime = DateTime.ParseExact(date, expectedFormats, culture, System.Globalization.DateTimeStyles.AllowInnerWhite);
DateTime dateTime = DateTime.Parse(date);
return dateTime;
}
// 对两个字符串日期进行比较
public static int Date_cmp(string str1, string str2)
{
//DateTime date1 = Tool.parseDate("2005-6-07 12:23:34");
//DateTime date2 = Tool.parseDate("2005-07-07 12:23:34");
//return -1
if (str2.Equals("0000-00-00 00:00:00")) return 1;
DateTime date1 = Tool.parseDate(str1);
DateTime date2 = Tool.parseDate(str2);
return DateTime.Compare(date1, date2);
}
// 判定日期date是否在[date1到date2]之间,是返回true;
public static bool DateInRegion(string date, string date1, string date2)
{
return (Date_cmp(date, date1) >= 0) && (Date_cmp(date, date2) <= 0);
}
// 判定日期date是否在(date1+minute到date1+minute+second]之间,是返回true;
public static bool DateInRegion(string date, string date1, int minute, int second)
{
DateTime D = parseDate(date1).AddMinutes(minute);
string d1 = ToString(D);
string d2 = ToString(D.AddSeconds(second));
return DateInRegion(date, d1, d2);
}
// 对两个日期date1和date2进行比较
// date1 = 2016-05-27 date2 = 2016-05-29
public static long Shortdate_cmp(string date1, string date2)
{
long d1 = long.Parse(date1.Replace("-", "").Replace("/", ""));
long d2 = long.Parse(date2.Replace("-", "").Replace("/", ""));
return d1 - d2;
}
// 获取两个日期之间的分钟差值
public static long Sub_minite(string str1, string str2)
{
DateTime date1 = Tool.parseDate(str1);
DateTime date2 = Tool.parseDate(str2);
return (date1.Ticks - date2.Ticks) / 10000 / 1000 / 60;
}
// 获取某个日期的对应的毫秒值
public static long ms(DateTime time)
{
return time.Ticks / 10000;
}
// 以日为周期,获取date = "2005-6-7 12:23:34" 对应今日时间
public static string toTodayTime(string date)
{
DateTime D = parseDate(date); // 转化date为日期
string D_day = getDate(D); // 获取日期 "2005-06-07"
string T_day = getDate(DateTime.Now); // 今日日期 "2016-05-23"
string todayTime = ToString(D).Replace(D_day, T_day);
return todayTime; // "2016-5-23 12:23:34"
}
// 以周为周期,获取date = "2005-6-7 12:23:34" 对应的本周日期时间
public static string toThisWeekTime(string date)
{
DateTime D = parseDate(date); // 转化date为日期
string T1_day = getDate(D);
DayOfWeek DayOfWeek1 = D.DayOfWeek; // 获取日期为星期几
DateTime Now = DateTime.Now;
DayOfWeek DayOfWeek2 = Now.DayOfWeek; // 当前为星期几
Now = Now.AddDays(DayOfWeek1 - DayOfWeek2);
string T2_day = getDate(Now); // 获取D_day的本周日期 "2016/5/24"
string weekTime = ToString(D).Replace(T1_day, T2_day);
return weekTime; // "2016-5-26 12:23:34"
}
// 以月为周期,获取date = "2016-04-07 12:23:34" 对应的本月日期时间
public static string toThisMonthTime(string date)
{
DateTime D = parseDate(date); // 转化date为日期
string T1_day = getDate(D);
float days1 = DateTime.DaysInMonth(D.Year, D.Month); // 获取日期对应月份的总天数
DateTime Now = DateTime.Now;
float days2 = DateTime.DaysInMonth(Now.Year, Now.Month); // 获取本月的总天数
int day = FloatToInt(D.Day * days2 / days1); // 按总天数比例转化为本月对应的某天
string T2_day = Now.Year + "-" + Now.Month + "-" + day; // 获取D_day的本月日期 "2016-05-23"
string monthTime = ToString(D).Replace(T1_day, T2_day);
return monthTime; // "2016-5-7 12:23:34"
}
// 浮点型,按四舍五入转化为整数
public static int FloatToInt(float n)
{
int m = (int)n;
return n-m<0.5f ? m : m + 1;
}
#endregion
C# 日期时间处理函数
最新推荐文章于 2024-07-01 21:58:15 发布