一、C#时间字符串转换

class Program

    {

        static void Main(string[] args)

        {

            DateTime datetime = DateTime.Now;

            //打印当前时间

            Console.WriteLine("时间为\n"+ datetime + "\n");



            //方法1:时间转化为字符串

            string stringtime1 = String.Format(

                "\n方法1:\n" +

                "年:{0:yyyy} \n" +

                "月:{0:MM} \n" +

                "日:{0:dd} \n" +

                "星期几:{0:dddd} \n" +

                "24小时:{0:HH} \n" +

                "12小时:{0:hh} \n" +

                "分:{0:mm} \n" +

                "秒:{0:ss} \n" +

                "上午还是下午:{0:tt} \n" +

                "综合:{0:yyyy/MM/dd dddd HH:mm:ss tt} \n"

                , datetime);

            Console.WriteLine("Message: {0}", stringtime1);



            //方法2:

            String stringtime2 = datetime.ToString("yyyy-MM-dd dddd HH:mm:ss tt");

            Console.WriteLine("方法2:\n" + stringtime2);



            Console.ReadKey();

        }

    }

获取系统时间代码: DateTime datetime = DateTime.Now;

上面程序打印如下:

时间与日期的用法: 周一与周天  月初与月末

    //星期几  4  (今天星期四)   今天 2018-12-13

            this.label1.Text= ""+Convert.ToInt32((DateTime.Now.DayOfWeek.ToString("d")));

            //这周的周一的日期

            DateTime datew = DateTime.Now.AddDays(1-Convert.ToInt32(DateTime.Now.DayOfWeek));

            String z1 = datew.ToString("yyyy-MM-dd dddd");

            //这周的周末,等于周一加6天

            String z7 = datew.AddDays(6).ToString("yyyy-MM-dd dddd");

            this.label1.Text += "\n" + z1 + "\n" + z7;

            //这个月初

            String m1 = DateTime.Now.ToString("yyyy-MM-1");

            //下个月初 要用到字符串转时间

            DateTime datemf = Convert.ToDateTime(DateTime.Now.AddMonths(1).ToString("yyyy-MM-01"));

            //这个月末 = 下个月初减去1天

            DateTime datemn = datemf.AddDays(-1);

            String mn = datemn.ToString("yyyy-MM-dd");

            this.label1.Text += "\n" + m1 + "\n" + mn;

以上程序输出如下:

//2017年7月24日 
System.DateTime.Now.ToString("D");


//2017-7-24 
System.DateTime.Now.ToString("d");  


//2017年7月24日 13:46:15
System.DateTime.Now.ToString("F"); 


//2017年7月24日 13:46
System.DateTime.Now.ToString("f"); 



//2017-7-24 13:46:15 
System.DateTime.Now.ToString("G"); 


//2017-7-24 13:46 
System.DateTime.Now.ToString("g"); 


//13:46:15 
System.DateTime.Now.ToString("T"); 


//13:46 
System.DateTime.Now.ToString("t"); 


//2017年7月24日 8:46:15
System.DateTime.Now.ToString("U"); 



//2017-07-24 13:46:15Z 
System.DateTime.Now.ToString("u"); 


//7月24日 
System.DateTime.Now.ToString("m");
System.DateTime.Now.ToString("M");


//Tue, 24 July 2017 13:46:15 GMT
System.DateTime.Now.ToString("r");
System.DateTime.Now.ToString("R"); 


//2017年7月 
System.DateTime.Now.ToString("y");
System.DateTime.Now.ToString("Y");


//2017-07-24T15:52:19.1562500+08:00
System.DateTime.Now.ToString("o");
System.DateTime.Now.ToString("O"); 


//2017-07-24T13:46:15 
System.DateTime.Now.ToString("s"); 


//2017-07-24 15:52:19 
System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); 


//2017年07月24 15时56分48秒 
System.DateTime.Now.ToString("yyyy年MM月dd HH时mm分ss秒");

二、时间戳(TimeStamp)与时间(DateTime)的互相转换

时间戳:时间戳是指从格林威治时间(UTC)1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

时间戳的优势:

  1. 精确度高:时间戳能够记录精确到秒、毫秒、甚至微秒的时间,相比人类的日期时间表示方式更加精确。
  2. 可跨平台:时间戳是一种标准的时间表示方式,不受不同操作系统、程序语言等因素的影响,可以方便地跨平台传输和处理。
  3. 计算简便:时间戳是一个数字,可以直接进行比较、计算和排序。
  4. 存储节省:时间戳是一个数值类型,相比日期时间类型,可以节省存储空间。
  5. 兼容性好:时间戳可以和其他数据类型进行转换。

2.1C#时间戳代码获取:

/// <summary>
/// 取当前时间的时间戳,高并发情况下会有重复。想要解决这问题请使用加锁或其他方式。
/// </summary>
/// <param name="accurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回long类型时间戳</returns>
public static long GetTimeStamp(bool accurateToMilliseconds = false)
{
	if (accurateToMilliseconds)
	{
		return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
	}
	else
	{
		return DateTimeOffset.UtcNow.ToUnixTimeSeconds();
	}
}
static void Main(string[] args)
{
	// 1700227312 精确到秒的时间戳 长度为10
	Console.WriteLine(GetTimeStamp(false));
	// 1700227312509 精确到毫秒的时间戳 长度为13
	Console.WriteLine(GetTimeStamp(true));
}

2.2获取指定时间戳

/// <summary>
/// 取指定时间的时间戳
/// </summary>
/// <param name="accurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回long类型时间戳</returns>
public static long GetTimeStamp(DateTime dateTime, bool accurateToMilliseconds = false)
{
	if (accurateToMilliseconds)
	{
		return new DateTimeOffset(dateTime).ToUnixTimeMilliseconds();
	}
	else
	{
		return new DateTimeOffset(dateTime).ToUnixTimeSeconds();
	}
}

2.3时间戳转换时间

/// <summary>
/// 指定时间戳转为时间。
/// </summary>
/// <param name="timeStamp">需要被反转的时间戳</param>
/// <param name="accurateToMilliseconds">是否精确到毫秒</param>
/// <returns>返回时间戳对应的DateTime</returns>
public static DateTime GetTime(long timeStamp, bool accurateToMilliseconds = false)
{
	if (accurateToMilliseconds)
	{
		return DateTimeOffset.FromUnixTimeMilliseconds(timeStamp).LocalDateTime;
	}
	else
	{
		return DateTimeOffset.FromUnixTimeSeconds(timeStamp).LocalDateTime;
	}
}
static void Main(string[] args)
{
	// 2023/11/17 21:21:52
	Console.WriteLine(GetTime(1700227312, false));
	// 2023/11/17 21:21:52
	Console.WriteLine(GetTime(1700227312509, true));
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GarFe-Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值