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