在C#开发中,获取系统当前时间并灵活格式化显示是高频需求,无论是记录操作日志、展示页面时间还是处理时间相关的业务逻辑都会用到。C#提供了完善的DateTime类型来支持时间相关的操作,开发者可以通过简单的代码快速完成时间获取和格式化工作。

C#获取当前系统时间的方法
获取当前系统时间最常用的是DateTime.Now属性,它会返回当前系统的本地日期和时间,包含年、月、日、时、分、秒、毫秒等信息。如果需要获取协调世界时(UTC)时间,可以使用DateTime.UtcNow属性。
除了直接获取完整时间,也可以单独获取时间的各个组成部分,比如年、月、日、小时等,DateTime类型提供了对应的属性来访问这些信息。
基础获取示例
using System;
class Program
{
static void Main()
{
// 获取当前本地时间
DateTime localTime = DateTime.Now;
// 获取当前UTC时间
DateTime utcTime = DateTime.UtcNow;
Console.WriteLine("当前本地时间:" + localTime);
Console.WriteLine("当前UTC时间:" + utcTime);
// 单独获取时间的各个部分
Console.WriteLine("当前年份:" + localTime.Year);
Console.WriteLine("当前月份:" + localTime.Month);
Console.WriteLine("当前日:" + localTime.Day);
Console.WriteLine("当前小时:" + localTime.Hour);
Console.WriteLine("当前分钟:" + localTime.Minute);
Console.WriteLine("当前秒:" + localTime.Second);
}
}
C#日期时间格式化方法
获取到时间之后,默认的字符串显示格式可能不符合业务需求,这时候就需要对时间进行格式化。C#中日期时间的格式化主要通过ToString方法实现,支持标准日期和时间格式字符串、自定义日期和时间格式字符串两种形式。
标准日期和时间格式字符串
标准格式字符串是使用单个格式说明符来表示预定义的格式,常用的格式说明符如下:
- d:短日期模式,比如2024/3/15
- D:长日期模式,比如2024年3月15日
- t:短时间模式,比如14:30
- T:长时间模式,比如14:30:25
- f:完整日期短时间模式,比如2024年3月15日 14:30
- F:完整日期长时间模式,比如2024年3月15日 14:30:25
- g:常规日期短时间模式,比如2024/3/15 14:30
- G:常规日期长时间模式,比如2024/3/15 14:30:25
标准格式使用示例
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// 短日期格式
Console.WriteLine("短日期格式(d):" + now.ToString("d"));
// 长日期格式
Console.WriteLine("长日期格式(D):" + now.ToString("D"));
// 短时间格式
Console.WriteLine("短时间格式(t):" + now.ToString("t"));
// 长时间格式
Console.WriteLine("长时间格式(T):" + now.ToString("T"));
// 完整日期短时间格式
Console.WriteLine("完整日期短时间(f):" + now.ToString("f"));
// 完整日期长时间格式
Console.WriteLine("完整日期长时间(F):" + now.ToString("F"));
}
}
自定义日期和时间格式字符串
如果标准格式无法满足需求,还可以使用自定义格式字符串,通过组合不同的格式说明符来定义自己需要的时间格式。常用的自定义格式说明符如下:
| 格式说明符 | 说明 | 示例 |
|---|---|---|
| yyyy | 四位年份 | 2024 |
| MM | 两位月份(不足两位补0) | 03 |
| dd | 两位日期(不足两位补0) | 05 |
| HH | 24小时制的小时(不足两位补0) | 14 |
| hh | 12小时制的小时(不足两位补0) | 02 |
| mm | 两位分钟(不足两位补0) | 30 |
| ss | 两位秒数(不足两位补0) | 25 |
| fff | 三位毫秒 | 123 |
| dddd | 完整星期名称 | 星期五 |
| MMM | 完整月份名称 | 三月 |
自定义格式使用示例
using System;
class Program
{
static void Main()
{
DateTime now = DateTime.Now;
// 自定义格式:yyyy-MM-dd HH:mm:ss
string format1 = now.ToString("yyyy-MM-dd HH:mm:ss");
Console.WriteLine("格式1:" + format1);
// 自定义格式:yyyy年MM月dd日 hh:mm:ss tt
string format2 = now.ToString("yyyy年MM月dd日 hh:mm:ss tt");
Console.WriteLine("格式2:" + format2);
// 自定义格式:dd/MM/yyyy dddd
string format3 = now.ToString("dd/MM/yyyy dddd", System.Globalization.CultureInfo.GetCultureInfo("zh-CN"));
Console.WriteLine("格式3:" + format3);
// 带毫秒的自定义格式
string format4 = now.ToString("yyyy-MM-dd HH:mm:ss.fff");
Console.WriteLine("格式4:" + format4);
}
}
注意事项
在进行时间格式化的时候,需要注意不同文化区域下的格式差异,比如部分地区的日期分隔符是.,有的是-。如果需要固定格式,建议显式指定CultureInfo,避免使用系统默认的文化区域导致格式不符合预期。
另外,DateTime.Now获取的是系统本地时间,如果应用部署在不同时区的服务器上,可能会出现时间偏差,这种场景下如果需要统一时间标准,建议使用DateTime.UtcNow获取UTC时间后再根据需求转换时区。
C#DateTime日期格式化ToString方法修改时间:2026-06-11 00:06:22