C# 日期时间处理函数

# 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

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值