C# 计算日期时间 的年月日时分秒

这个方法用于计算两个DateTime对象之间的间隔,根据指定的格式(年、月、日、小时、分钟、秒)返回long型结果。通过处理Ticks属性并进行相应的除法运算来转换间隔单位。对于月份和年的计算,涉及到日期的加减操作,以确保准确计算出间隔数。
///   <summary>  
        ///  得到两个日期的指定格式间隔
        ///   </summary>  
        ///   <param   name="dt1">日期1</param>  
        ///   <param   name="dt2">日期2</param>  
        ///   <param   name="dateformat">间隔格式: y:年 M:月 d:天 h:小时 m:分钟 s:秒</param>  
        ///   <returns>间隔long型</returns>  
        public static long GetIntervalOf2DateTime(DateTime dt1, DateTime dt2, string dateformat)
        {
            try
            {
                long interval = dt1.Ticks - dt2.Ticks;
                DateTime dt11;
                DateTime dt22;
                switch (dateformat)
                {
                    case "s": //秒  
                        interval /= 10000000;
                        break;
                    case "m": //分钟  
                        interval /= 600000000;
                        break;
                    case "h": //小时  
                        interval /= 36000000000;
                        break;
                    case "d": //天  
                        interval /= 864000000000;
                        break;
                    case "M": //月  
                        dt11 = (dt1.CompareTo(dt2) >= 0) ? dt2 : dt1;
                        dt22 = (dt1.CompareTo(dt2) >= 0) ? dt1 : dt2;
                        interval = -1;
                        while (dt22.CompareTo(dt11) >= 0)
                        {
                            interval++;
                            dt11 = dt11.AddMonths(1);
                        }
                        break;
                    case "y": //年  
                        dt11 = (dt1.CompareTo(dt2) >= 0) ? dt2 : dt1;
                        dt22 = (dt1.CompareTo(dt2) >= 0) ? dt1 : dt2;
                        interval = -1;
                        while (dt22.CompareTo(dt11) >= 0)
                        {
                            interval++;
                            dt11 = dt11.AddMonths(1);
                        }
                        interval /= 12;
                        break;
                }
                return interval;
            }
            catch
            {
                return 0;
            }
        }
C#中,若要将包含年月日时分秒格式日期换为时间(这里可能指特定格式的字符串时间表达或其他形式),可按需求选择以下几种方法: ### 换为特定格式的时间字符串 用`DateTime.ToString()`方法将`DateTime`对象换为指定格式字符串。把日期换为`HH:mm:ss`格式的时间字符串,示例如下: ```csharp DateTime dateWithTime = DateTime.Now; string formattedTime = dateWithTime.ToString("HH:mm:ss"); Console.WriteLine(formattedTime); ``` 同时,也可以根据需要,将其换为带有年月日部分的不同格式时间字符串, 如`yyyy-MM-dd HH:mm:ss`: ```csharp DateTime dateWithTime = DateTime.Now; string formattedDateTime = dateWithTime.ToString("yyyy-MM-dd HH:mm:ss"); Console.WriteLine(formattedDateTime); ``` ### 换为时间戳 使用`DateTimeOffset`类获取时间戳,换为级和毫级时间戳的示例如下: ```csharp DateTime now = DateTime.Now; DateTimeOffset currentTime = new DateTimeOffset(now); // 计算时间戳() long timestampInSeconds = currentTime.ToUnixTimeSeconds(); // 计算时间戳(毫) long timestampInMilliseconds = currentTime.ToUnixTimeMilliseconds(); Console.WriteLine("当前时间的时间戳(): " + timestampInSeconds); Console.WriteLine("当前时间的时间戳(毫): " + timestampInMilliseconds); ``` ### 仅提取时间部分 若只需提取时间部分(即时分秒),可使用`TimeOfDay`属性,示例如下: ```csharp DateTime dateWithTime = DateTime.Now; TimeSpan timePart = dateWithTime.TimeOfDay; string timePartString = timePart.ToString(@"hh\:mm\:ss"); Console.WriteLine(timePartString); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值