news 2026/10/15 23:49:08

C#6——DateTime

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#6——DateTime

DateTime.Now.ToString()

DateTime.Now.ToString()是 C# 中格式化当前系统时间 / 日期的核心用法,通过传入不同格式字符串,可灵活输出符合业务需求的日期时间格式(如日志命名、报告时间戳、界面显示等)。以下是完整用法拆解,包含基础语法、常用格式、自定义规则和注意事项:

一、核心语法

// 基础形式:无参数(默认格式,受系统区域设置影响) string defaultTime = DateTime.Now.ToString(); // 核心形式:指定格式字符串(推荐,可控性强) string customTime = DateTime.Now.ToString("格式字符串"); // 进阶:指定格式 + 区域(避免多语言环境格式错乱) string enTime = DateTime.Now.ToString("yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);

二、常用预设格式(快速套用)

C# 提供了预设格式符,对应常用的标准化格式,无需手动拼接:

格式符含义示例(当前时间:2025-12-18 15:30:45.123)
d短日期格式2025/12/18(系统区域为中文)
D长日期格式2025 年 12 月 18 日 星期四
t短时间格式15:30
T长时间格式15:30:45
f完整日期 + 短时间2025 年 12 月 18 日 星期四 15:30
F完整日期 + 长时间2025 年 12 月 18 日 星期四 15:30:45
g常规日期 + 短时间2025/12/18 15:30
G常规日期 + 长时间2025/12/18 15:30:45
o可排序格式(ISO 8601)2025-12-18T15:30:45.1230000+08:00
s可排序字符串格式2025-12-18T15:30:45
uUTC 可排序格式2025-12-18 07:30:45Z(UTC 时间)

示例代码:

// 输出:2025年12月18日 星期四 Console.WriteLine(DateTime.Now.ToString("D")); // 输出:2025-12-18T15:30:45(日志/数据库常用) Console.WriteLine(DateTime.Now.ToString("s"));

三、自定义格式(精准控制)

通过自定义格式符拼接,可实现任意格式(机器视觉 / 工业场景高频使用,如文件名、检测报告时间戳):

自定义符含义示例
yyyy4 位年份2025
MM2 位月份(补 0)12
dd2 位日期(补 0)18
HH24 小时制(补 0)15
hh12 小时制(补 0)03
mm分钟(补 0)30
ss秒(补 0)45
fff毫秒(3 位,补 0)123
tt上午 / 下午(中文)下午
:时间分隔符:
/日期分隔符/
高频自定义示例(工业 / 视觉场景):
// 1. 文件名格式(无特殊字符):20251218_153045 string fileNameTime = DateTime.Now.ToString("yyyyMMdd_HHmmss"); // 2. 高精度时间戳(含毫秒):2025-12-18 15:30:45.123 string highPrecision = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 3. 12小时制带上午/下午:2025-12-18 03:30:45 下午 string twelveHour = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss tt"); // 4. 仅年月:2025-12 string yearMonth = DateTime.Now.ToString("yyyy-MM");

四、关键注意事项

  1. 区域适配:

    • 直接使用ToString("yyyy/MM/dd")时,/会被系统区域的日期分隔符替换(如中文是/,英文是-);
    • 若需固定分隔符(如强制-),用InvariantCulture:
      // 强制输出:2025-12-18(不受系统区域影响) string fixedFormat = DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture);
  2. 大小写敏感:

    • MM是月份(01-12),mm是分钟;
    • HH是 24 小时制,hh是 12 小时制;
    • yyyy是 4 位年,yy是 2 位年(25)。
  3. 空格式 / 无参数:

    • DateTime.Now.ToString()等价于ToString("G")(常规格式),输出如2025/12/18 15:30:45(中文系统);
    • 不推荐无参数使用,易因系统区域不同导致格式错乱。
  4. UTC 时间:若需世界统一时间(而非本地时间),用DateTime.UtcNow:

    // UTC时间:2025-12-18 07:30:45 string utcTime = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss");

五、工业场景实战示例(机器视觉)

// 场景:视觉检测报告命名(含时间戳) string reportName = $"PMA检测报告_{DateTime.Now.ToString("yyyyMMdd_HHmmss_fff")}.pdf"; // 输出:PMA检测报告_20251218_153045_123.pdf // 场景:日志记录(精准时间) string log = $"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}] PMA工具XY位置:X=123.45, Y=67.89"; // 输出:[2025-12-18 15:30:45.123] PMA工具XY位置:X=123.45, Y=67.89

visionPro脚本写入CSV方法

using System.Text; CogToolBlock block1 = (CogToolBlock) mToolBlock.Tools["四合一磁铁"]; CogToolBlock block2 = (CogToolBlock) mToolBlock.Tools["长方形磁铁"]; CogToolBlock block3 = (CogToolBlock) mToolBlock.Tools["细长磁铁"]; double percent1 = (double)block1.Outputs["percent1"].Value, percent2 = (double) block1.Outputs["percent2"].Value, percent3 = (double) block1.Outputs["percent3"].Value, percent4 = (double) block1.Outputs["percent4"].Value, percent5 = (double) block2.Outputs["percent5"].Value, percent6 = (double) block3.Outputs["percent6"].Value; mToolBlock.Outputs["FlowResult"].Value = (bool)block1.Outputs["FlowResult"].Value && (bool)block2.Outputs["FlowResult"].Value && (bool)block3.Outputs["FlowResult"].Value; // 调用方法写入数据 WriteCsvNew ( mToolBlock.Outputs["FlowResult"].Value.ToString() + "," + percent1.ToString("f2") + "," + percent2.ToString("f2") + "," + percent3.ToString("f2") + "," + percent4.ToString("f2") + "," + percent5.ToString("f2") + "," + percent6.ToString("f2") + "," ); // 写入CSV文件方法 void WriteCsvNew(string result) { // 路径 string path = "D:\\CCD数据\\"; // 文件名称 string fileName = path + DateTime.Now.ToString("yyyy-MM-dd-") + "窗口1" + ".csv"; // 此时时间 string Datedate = DateTime.Now.ToString("T"); if(!Directory.Exists(path)) { Directory.CreateDirectory(path); } if(!File.Exists(fileName)) { StreamWriter sw = new StreamWriter(fileName, true, Encoding.UTF8); // 表头 string str1 = "时间" + "," + "总结果" + "," + "四合一1" + "," + "四合一2" + "," + "四合一3" + "," + "四合一4" + "," + "长方形" + "," + "细长1" + "," + "\t\n"; sw.Write(str1); sw.Close(); } StreamWriter sw1 = new StreamWriter(fileName, true, Encoding.UTF8); // 内容拼接 string str = Datedate + "," + result + "\t\n"; sw1.Write(str); sw1.Close(); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 19:34:56

sql server自动备份

1.在管理中点击维护计划向导 2.填写任务名称,点击更改 3.选择需要的备份时间,点击确定 4.勾选备份完整数据库 5.点击下一步 6.选择指定数据库 7.选择备份路径 8.选择完成后点击下一步 9.选择清除任务 10.点击下一步 11.点击完成 12.点击执行任务测试是否…

作者头像 李华
网站建设 2026/10/15 5:53:45

vue和springboot框架开发的救援物资管理系统_55j08br6

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vuespringboot_55j08br6 框架开发的救援物资管理系统…

作者头像 李华
网站建设 2026/10/15 11:28:33

制药行业质量与效率双提升:精益六西格玛的应用路径与价值分析

在全球制药行业面临成本压力持续增大、质量监管日趋严格、研发周期长且市场竞争激烈的背景下,制药企业迫切需要系统性的管理方法来提升运营效率和质量控制水平。本报告旨在深入分析精益六西格玛方法论在制药行业的应用价值,探讨其如何帮助企业实现质量与…

作者头像 李华
网站建设 2026/10/15 23:23:26

vue和springboot框架开发的老人健康信息管理系统_42q6c587

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 vuespringboot_42q6c587 框架开发的老人健康信息管理…

作者头像 李华
网站建设 2026/10/15 10:26:45

学习笔记:Kotlin Flow 操作符

Kotlin Flow 操作符 以下文章来源于RockByte ,作者RockByte. 十分钟速览 Kotlin Flow 操作符 一对一转换 map 将 Flow 中发出的每个元素转换为新元素,实现一对一映射。 fun main() runBlocking {flowOf("Kotlin", "Flow").ma…

作者头像 李华
网站建设 2026/10/15 0:01:14

2025年战略规划在商业组织治理现代化中的角色

本文将深入探讨2025年战略规划在商业组织治理现代化中的重要性。首先,战略规划为企业提供了清晰的愿景和行动方向,使得组织能够在动态市场中高效运作。同时,文中将分析市场变化带来的挑战,以及如何通过创新的治理方式来应对这些变…

作者头像 李华