C#时间操作类分享

发布时间 - 2026-01-11 02:02:01    点击率:

本文实例为大家分享了C#时间操作类的具体代码,供大家参考,具体内容如下

using System;

namespace DotNet.Utilities
{
 /// <summary>
 /// 时间类
 /// 1、SecondToMinute(int Second) 把秒转换成分钟
 /// </summary>
 public class TimeHelper
 {
  /// <summary>
  /// 将时间格式化成 年月日 的形式,如果时间为null,返回当前系统时间
  /// </summary>
  /// <param name="dt">年月日分隔符</param>
  /// <param name="Separator"></param>
  /// <returns></returns>
  public string GetFormatDate(DateTime dt, char Separator)
  {
   if (dt != null && !dt.Equals(DBNull.Value))
   {
    string tem = string.Format("yyyy{0}MM{1}dd", Separator, Separator);
    return dt.ToString(tem);
   }
   else
   {
    return GetFormatDate(DateTime.Now, Separator);
   }
  }
  /// <summary>
  /// 将时间格式化成 时分秒 的形式,如果时间为null,返回当前系统时间
  /// </summary>
  /// <param name="dt"></param>
  /// <param name="Separator"></param>
  /// <returns></returns>
  public string GetFormatTime(DateTime dt, char Separator) {
   if (dt != null && !dt.Equals(DBNull.Value))
   {
    string tem = string.Format("hh{0}mm{1}ss", Separator, Separator);
    return dt.ToString(tem);
   }
   else
   {
    return GetFormatDate(DateTime.Now, Separator);
   }
  }
  /// <summary>
  /// 把秒转换成分钟
  /// </summary>
  /// <returns></returns>
  public static int SecondToMinute(int Second)
  {
   decimal mm = (decimal)((decimal)Second / (decimal)60);
   return Convert.ToInt32(Math.Ceiling(mm));
  }

  #region 返回某年某月最后一天
  /// <summary>
  /// 返回某年某月最后一天
  /// </summary>
  /// <param name="year">年份</param>
  /// <param name="month">月份</param>
  /// <returns>日</returns>
  public static int GetMonthLastDate(int year, int month)
  {
   DateTime lastDay = new DateTime(year, month, new System.Globalization.GregorianCalendar().GetDaysInMonth(year, month));
   int Day = lastDay.Day;
   return Day;
  }
  #endregion

  #region 返回时间差
  public static string DateDiff(DateTime DateTime1, DateTime DateTime2)
  {
   string dateDiff = null;
   try
   {
    //TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
    //TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
    //TimeSpan ts = ts1.Subtract(ts2).Duration();
    TimeSpan ts = DateTime2 - DateTime1;
    if (ts.Days >= 1)
    {
     dateDiff = DateTime1.Month.ToString() + "月" + DateTime1.Day.ToString() + "日";
    }
    else
    {
     if (ts.Hours > 1)
     {
      dateDiff = ts.Hours.ToString() + "小时前";
     }
     else
     {
      dateDiff = ts.Minutes.ToString() + "分钟前";
     }
    }
   }
   catch
   { }
   return dateDiff;
  }
  #endregion

  #region 获得两个日期的间隔
  /// <summary>
  /// 获得两个日期的间隔
  /// </summary>
  /// <param name="DateTime1">日期一。</param>
  /// <param name="DateTime2">日期二。</param>
  /// <returns>日期间隔TimeSpan。</returns>
  public static TimeSpan DateDiff2(DateTime DateTime1, DateTime DateTime2)
  {
   TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
   TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
   TimeSpan ts = ts1.Subtract(ts2).Duration();
   return ts;
  }
  #endregion

  #region 格式化日期时间
  /// <summary>
  /// 格式化日期时间
  /// </summary>
  /// <param name="dateTime1">日期时间</param>
  /// <param name="dateMode">显示模式</param>
  /// <returns>0-9种模式的日期</returns>
  public static string FormatDate(DateTime dateTime1, string dateMode)
  {
   switch (dateMode)
   {
    case "0":
     return dateTime1.ToString("yyyy-MM-dd");
    case "1":
     return dateTime1.ToString("yyyy-MM-dd HH:mm:ss");
    case "2":
     return dateTime1.ToString("yyyy/MM/dd");
    case "3":
     return dateTime1.ToString("yyyy年MM月dd日");
    case "4":
     return dateTime1.ToString("MM-dd");
    case "5":
     return dateTime1.ToString("MM/dd");
    case "6":
     return dateTime1.ToString("MM月dd日");
    case "7":
     return dateTime1.ToString("yyyy-MM");
    case "8":
     return dateTime1.ToString("yyyy/MM");
    case "9":
     return dateTime1.ToString("yyyy年MM月");
    default:
     return dateTime1.ToString();
   }
  }
  #endregion

  #region 得到随机日期
  /// <summary>
  /// 得到随机日期
  /// </summary>
  /// <param name="time1">起始日期</param>
  /// <param name="time2">结束日期</param>
  /// <returns>间隔日期之间的 随机日期</returns>
  public static DateTime GetRandomTime(DateTime time1, DateTime time2)
  {
   Random random = new Random();
   DateTime minTime = new DateTime();
   DateTime maxTime = new DateTime();

   System.TimeSpan ts = new System.TimeSpan(time1.Ticks - time2.Ticks);

   // 获取两个时间相隔的秒数
   double dTotalSecontds = ts.TotalSeconds;
   int iTotalSecontds = 0;

   if (dTotalSecontds > System.Int32.MaxValue)
   {
    iTotalSecontds = System.Int32.MaxValue;
   }
   else if (dTotalSecontds < System.Int32.MinValue)
   {
    iTotalSecontds = System.Int32.MinValue;
   }
   else
   {
    iTotalSecontds = (int)dTotalSecontds;
   }


   if (iTotalSecontds > 0)
   {
    minTime = time2;
    maxTime = time1;
   }
   else if (iTotalSecontds < 0)
   {
    minTime = time1;
    maxTime = time2;
   }
   else
   {
    return time1;
   }

   int maxValue = iTotalSecontds;

   if (iTotalSecontds <= System.Int32.MinValue)
    maxValue = System.Int32.MinValue + 1;

   int i = random.Next(System.Math.Abs(maxValue));

   return minTime.AddSeconds(i);
  }
  #endregion
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# C#  # 时间操作类  # C# string格式的日期时间字符串转为DateTime类型的方法  # asp.net(C#)实现功能强大的时间日期处理类完整实例  # 深入Unix时间戳与C# DateTime时间类型互换的详解  # 时间为  # 转换成  # 某年某月  # 大家分享  # 具体内容  # 大家多多  # 分隔符  # Format  # tem  # yyyy  # MM  # dd  # DBNull  # DateTime  # GetFormatDate  # char  # Equals  # amp  # decimal  # static 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在万网自助建站中设置域名及备案?  Laravel安装步骤详细教程_Laravel环境搭建指南  潮流网站制作头像软件下载,适合母子的网名有哪些?  在线教育网站制作平台,山西立德教育官网?  微信推文制作网站有哪些,怎么做微信推文,急?  太平洋网站制作公司,网络用语太平洋是什么意思?  手机网站制作与建设方案,手机网站如何建设?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在IIS7中新建站点?详细步骤解析  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  如何快速生成高效建站系统源代码?  怎样使用JSON进行数据交换_它有什么限制  Laravel用户密码怎么加密_Laravel Hash门面使用教程  如何安全更换建站之星模板并保留数据?  南京网站制作费用,南京远驱官方网站?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Python文件异常处理策略_健壮性说明【指导】  Python结构化数据采集_字段抽取解析【教程】  三星、SK海力士获美批准:可向中国出口芯片制造设备  EditPlus 正则表达式 实战(3)  Laravel定时任务怎么设置_Laravel Crontab调度器配置  详解Oracle修改字段类型方法总结  百度浏览器如何管理插件 百度浏览器插件管理方法  西安专业网站制作公司有哪些,陕西省建行官方网站?  网站建设保证美观性,需要考虑的几点问题!  Laravel中的Facade(门面)到底是什么原理  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  JS弹性运动实现方法分析  免费网站制作appp,免费制作app哪个平台好?  iOS发送验证码倒计时应用  制作企业网站建设方案,怎样建设一个公司网站?  Android中AutoCompleteTextView自动提示  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  香港服务器部署网站为何提示未备案?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  独立制作一个网站多少钱,建立网站需要花多少钱?  C++时间戳转换成日期时间的步骤和示例代码  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  如何用虚拟主机快速搭建网站?详细步骤解析  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何快速重置建站主机并恢复默认配置?