常用的几个DateTime处理方法

本文深入探讨了Unix时间戳与日期之间的转换方法,包括获取当前时间戳、计算时间差以及将Unix时间戳转换为日期格式。通过实例代码,详细解释了如何实现这些功能,为开发者提供了实用的时间处理技巧。

常用的几个DateTime处理方法

using System;
using System.Collections.Generic;


class TimeUtil
{
    static DateTime timeStamp = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);  //得到1970年的时间戳  
    /// <summary>
    /// 得到现在到1970/1/1日的秒
    /// </summary>
    /// <returns></returns>
    public static int GetNowUnixTicks()
    {
        TimeSpan span = System.DateTime.UtcNow - timeStamp;
        return (int)span.TotalSeconds;
    }
    //至今为止的时长描述
    public static string GetTimeDurationSoFar(int happenTime)
    {
        int duration = GetNowUnixTicks() - happenTime;
        if (duration > 0)
        {
            if (duration < 5 * 60) return "刚刚";
            if (duration < 60 * 60) return (int)(duration / 60) + "分钟前";
            if (duration < 24 * 60 * 60) return (int)(duration / 60 / 60) + "小时前";
            if (duration < 30 * 24 * 60 * 60) return (int)(duration / 60 / 60 / 24) + "天前";
            return (int)(duration / 60 / 60 / 24 / 30) + "月前";
        }
        else
        {
            return "还未发生";
        }
    }
    /// <summary>
    /// 将Unix时间戳转换为DateTime类型时间
    /// </summary>
    /// <param name="d">int 型数字</param>
    /// <returns>DateTime</returns>
    public static System.DateTime ConvertIntDateTime(int d)
    {
        System.DateTime time = System.DateTime.MinValue;
        System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
        time = startTime.AddSeconds(d);
        return time;
	//或写成下面的简洁方法
	//return timeStamp.AddSeconds(d);
    }

    /// <summary>
    /// 将c# DateTime时间格式转换为Unix时间戳格式
    /// </summary>
    /// <param name="time">时间</param>
    /// <returns>int</returns>
    public static int ConvertDateTimeInt(System.DateTime time)
    {
        int intResult = 0;
        System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
        intResult = (int)(time - startTime).TotalSeconds;
        return intResult;
	//或写成下面的简洁方法
	//return (int)(time - timeStamp).TotalSeconds;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值