DateTime.Now.ToLocalTime()不刷新?如何编写按系统配置格式输出时间的程序
按系统区域配置输出日期时间的解决方案
嘿,我懂你要实现的效果——让程序自动跟着系统区域设置的日期格式输出,不用手动改代码对吧?其实这事不难,.NET已经帮我们封装好了适配系统配置的方法,直接用就行。
给你上能直接用的代码示例(这里以WinForms按钮点击事件为例,控制台程序也可以复用核心逻辑):
private void btnShowDate_Click(object sender, EventArgs e) { // 获取当前本地日期时间,DateTime.Now本身就是本地时间,不用额外调用ToLocalTime()哦 DateTime currentDateTime = DateTime.Now; // 关键就在这:用"d"格式符,它会自动读取系统区域设置里的短日期格式 string systemFormattedDate = currentDateTime.ToString("d"); // 把结果展示出来,这里用MessageBox举例,你也可以输出到控制台或者Label控件里 MessageBox.Show(systemFormattedDate); }
给你拆解下核心点:
ToString("d")是核心:这个格式字符串对应的是系统默认的短日期格式,不管你把系统区域设置成dd.mm.yyyy还是dd/mm/yyyy,它都会自动匹配当前配置输出。- 关于
ToLocalTime():只有当你用DateTime.UtcNow获取UTC时间时,才需要用这个方法转成本地时间;DateTime.Now本身就是基于本地时区的时间,所以不用多此一举。
如果需要连时间一起输出,也可以用这些系统适配的格式符:
ToString("g"):短日期 + 短时间(跟随系统配置的时间格式)ToString("G"):短日期 + 长时间(同样匹配系统设置)
这样不管用户怎么修改系统的区域/时钟格式,你的程序都能自动适配啦~
内容的提问来源于stack exchange,提问作者Constantin M
相关产品推荐
相关产品推荐

