首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# 自定义类型通过实现IFormattable接口,来输出指定的格式和语言文化的字符串(例:DateTime)

开发一些国际化的应用时,应用程序需要调用与当前线程不同的语言文化来格式化字符串. so,为了对字符串进行更多的控制,你重写的的ToString()方法应该允许指定具体的格式和语言文化信息....为了能使调用者调用对象实例的ToString()方法的时候,选择格式和语言文化,该对象应该实现System.IFormattable接口,接口代码如下: // // 摘要: /...- 或 - null 引用( Visual Basic 为 Nothing),用于使用为 System.IFormattable 实现的类型定义的默认格式。...- 或 - null 引用( Visual Basic 为 Nothing),用于从操作系统的当前区域设置获取数字格式信息。...DateTime实现了IFormattable接口,所以它可以自定义地构造我们想要的DateTime字符串,具体实现如下: 第一步: ?

1.1K30

C# String.Format的格式限定符与Format方法将多个对象格式化一个字符串原理

发现可替换参数0,则调用对应参数的IFormattable接口的ToString方法,如果格式化字符串的可替换参数0后面跟着格式限定符.则将格式限定符传递给ToString方法.没有则传递默认的方法....o 往返日期/时间模式 表示使用保留时区信息的模式的自定义 DateTime 格式字符串。该模式专用于往返 DateTime 格式(包括文本形式的 Kind 属性)。...格式化不会修改正在格式化的 DateTime 对象的值。因此,应用程序使用此格式说明符之前必须将该值转换为协调世界时 (UTC)。...t 短时间模式 表示由当前 ShortTimePattern 属性定义的自定义 DateTime 格式字符串。 例如,用于固定区域性的自定义格式字符串为“HH:mm”。...偏移量范围为 –12 至 +13。一位数字的偏移量设置为不带前导零的格式偏移量受夏时制影响。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。

4.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

C# 基础知识系列- 13 常见类库介绍(二)日期时间类

C#,这两个都是结构体,结构体与类都能继承并实现接口,但是与类不同的是结构体在内存存放在栈里。这部分在微软官方文档关于CLR有过介绍。后续也会针对CLR写一个系列。这里就不做过多的介绍了。...DateTime与字符串之间的恩怨情仇 程序,用户或者三方输入的日期大多都是字符串格式的,而且系统获取到的时间也大多会转成字符串给其他人展示,所以这里就会涉及到DateTime与字符串之间的相互转换...这是DateTime的默认输出结果,当然会根据系统的语言和地区等设置变化而产生不同的变化。为了避免这种变化,C#提供了一种日期类型的格式化模板,这里介绍几个常用的格式代表: 格式符 含义 yy 年份。...实际开发,最常用的格式是:yyyy-MM-dd HH:mm:ss,显示效果就是:2020-04-25 12:00:00。其中连接符可以根据开发需求更换。...C#通过分析字符串,然后将字符串转换成对应的时间类型。当然,正确解析到时间的时候,C#会抛出异常。

2.2K30

C#之反射、元数据详解

前言   本节主要讲述自定义特性、反射 。自定义特性允许把自定义元数据与程序元素关联起来。这些元数据是在编译过程创建的,并嵌入程序集中。...目前,此属性仅可应用于 C#、Microsoft 中间语言 (MSIL) 和已发出的代码。 Interface 1024 可以对接口应用属性。 Method 64 可以对方法应用属性。...StringBuilder更改为格式字符串")] public string ToString(string format, IFormatProvider formatProvider)...  用于查找程序集或类型定义了什么自定义特性的方法取决于与该特性相关的对象类型。...嵌套RecyclerView》 《Android里用AsyncTask后的接口回调》 .Net C#C#自定义特性(Attribute)讲解与实际应用》 《C#根据类生成签名字符串(附DEMO下载地址

1.1K30

ASP.NET Core Web API设置响应输出的Json数据格式的两种方式

前言 ASP.NET Core Web API设置响应输出Json数据格式有两种方式,可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库应用程序全局设置接口响应的...Newtonsoft.Json Newtonsoft.Json是一个功能强大且灵活的.NET JSON序列化和反序列化库,用于.NET应用程序处理JSON数据。...设置Json统一格式需求 修改属性名称的序列化方式,.Net Core默认使用小驼峰序列化Json属性参数,前端想要使用与后端模型本身命名格式输出(如:UserName)。...writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));         }     } Program.cs全局配置             ...options.JsonSerializerOptions.PropertyNamingPolicy = null;                 //自定义输出的时间格式

57910

C#关于DateTime得到的当前时间的格式问题

C#DateTime获取到不同格式的时间转换为固定的时间格式:     C#中有严格的大小写限定     yyyy-MM-dd hh:mm:ss      两者之间是有区别的:     yyyy:代表年份...    MM:  代表月份     dd:   代表天     HH:   代表小时(24小时制)     mm:  代表分钟     ss:    代表秒     DateTime dt1 =Convert.ToDateTime...("2010-06-15");     DateTime dt2= Convert.ToDateTime("2010-05-10");     (1)计算两个日期的差值:         TimeSpan...        int day=span.days;     (2)给日期增加一天、减少一天         dt1.AddDays(10);         dt2.AddDays(-10);      (3)格式化日期...:         stirng date=DateTime.Now.Tostring("yyyy-MM-dd hh:mm:ss");

2K30

C# 自定义的控制台输出重定向类整合调用方信息

C# 自定义的控制台输出重定向类整合调用方信息 目录 C# 自定义的控制台输出重定向类整合调用方信息 一、前言 二、输出重定向基础版 三、输出重定向进阶版(传递调用方信息) 四、后记及资源 独立观察员...2021 年 1 月 6 日 一、前言 众所周知, .NET 的控制台应用程序(就是那种小黑框程序)输出信息,使用的是控制台输出方法 Console.Write ("消息") 或 Console.WriteLine...原来我构造函数添加了这么一句 —— Console.SetOut (new ConsoleWriter (ShowInfo)); —— 这就把原本输出到控制台的消息,重定向给了方法 ShowInfo...0); } } } 即新增一个包含了调用方信息三个参数的委托 _WriteCallerInfo,以及配套的构造方法,然后 Write 方法优先使用 _WriteCallerInfo...: 运行,测试,可以看到方法名和行号都对了: 四、后记及资源 这种重定向的方式个人觉得挺方便的,比如在动态库全都写成输出控制台的方式,然后主程序构造函数中指定重定向;另外,还可用于转录到日志:

1.6K20

git 修改commit日期为之前的日期

之前修改了一个文件,但是没有commit,现在我想要commit,日期为那天的日期 git 修改日期的方法很简单,因为有一个命令--date 可以设置 git 提交时间。...默认的 git 的提交时间会受到系统的时间的影响,如果想要系统的时间不会影响到 git 的提交时间,请使用本文的方式,自己指定提交的时间 使用git自定义时间的提交格式: git commit --date...,"Mar","Apr","May","Jun","Jul","Aug", "Sep","Oct","Nov","Dec" }; 如果需要使用 C#...如果修改过程需要修改上一次提交的日期,可以添加 --amend 的参数,如果要修改不是上一次的提交,而是很久的提交,我暂时没找到如何做,如果你知道怎么做,请告诉我 本文用的时间是 RFC 2822 格式...,这个格式的时间是 月 日 时间 年 +0800 而除了这个格式,还可以使用 ISO 8601 格式,如下面代码 2005-04-07T22:13:13 C# 可以使用 DateTime.UtcNow.ToString

2.3K10

精:C#这些年来受欢迎的特性

在这篇文章,我介绍 C# 历史版本的同时分享我最喜欢的特性,强调实用性的同时展示其优点。...接口现今开发 C# 的过程仍然流行使用,以下面的 IDateProvider 接口为例。... C# 很多 SOLID 编程原则 都是使用泛型来强化的,同样它也有助于保持代码的 干爽 。不要误解我的意思,我同时也写了一些迭代器, C# 同样中值得采用! 让我们更详细地看看泛型。...另外,我们现在使用字符串插值重写 ToString 方法。作为一名开发人员,犯上述错误要困难得多。最后,我也可以插值表达式中进行格式化。...注意第三次插值,DateOfBirth 是 DateTime 类型 - 因此我们可以使用习惯的所有标准格式。只需使用 :运算符来分隔变量和格式化。

14930

C# 这些年来受欢迎的特性

在这篇文章,我介绍 C# 历史版本的同时分享我最喜欢的特性,强调实用性的同时展示其优点。...接口现今开发 C# 的过程仍然流行使用,以下面的 IDateProvider 接口为例。... C# 很多 SOLID 编程原则 都是使用泛型来强化的,同样它也有助于保持代码的 干爽 。不要误解我的意思,我同时也写了一些迭代器, C# 同样中值得采用! 让我们更详细地看看泛型。...另外,我们现在使用字符串插值重写 ToString 方法。作为一名开发人员,犯上述错误要困难得多。最后,我也可以插值表达式中进行格式化。...注意第三次插值,DateOfBirth 是 DateTime 类型 - 因此我们可以使用习惯的所有标准格式。只需使用 :运算符来分隔变量和格式化。

16620

C# 日期格式化常用

常用日期帮助使用 C# DateTime日期格式C# DateTime与时间戳转换 不同运行环境日期统一 1、CultureInfo的InvariantCulture的作用 (1)、CultureInfo...直接DateTime.ToString()?那你就大错特错了,下面用代码,举个非常形象的例子。一个控制台里,模拟数据中心,然后放出多个线程,模拟客户端程序传递数据。...(1990, 10, 27).ToShortDateString()); } 同样的DateTime.ToShortDateString(),英语-美国,中文-中国,阿拉伯语-伊拉克和德语...(1990, 10, 27).ToString(CultureInfo.InvariantCulture.DateTimeFormat.ShortDatePattern, CultureInfo.InvariantCulture...image ok,这样不管客户端运行在什么语言环境下,输出的时间格式都是统一的,方面数据中心服务器对数据做后续处理。这样所有的输出结果都保持一致了。

2K20

.net NPOI Excel导入:时间格式2022526导入变成26-5月-2022

1、问题由来 在做一个导入的需求时,测试导入模板,无论导入模板里的日期设置成何种日期格式到代码中都会提示有不正确的格式化数据,加断点调试发现,导入的日期如:Excel表格是2022/5/26,断点看到的却是...2、解决方案 网上查询了几种解决方案,有导入的数据列格式判断转换,日期格式强转等等,都没什么效果,最后解决的方法如下: // NPOI导入日期格式处理 string mytime = dateStr.Trim...dateTime; if(DateTime.TryParseExact(mytime, expectedFormats, culture, DateTimeStyles.AllowInnerWhite..., out dateTime)) { mytime = dateTime.ToString("yyyy-MM-dd"); } else { mytime = dateStr.Trim()...; } // 新的 mytime 即为处理后的导入日期格式化后的字符串值 3、参考文档 1)C# NPOI 读取日期格式数据不准确问题 以上就是.net NPOI Excel导入:时间格式2022/5/

11410

.NET基础拾遗(3)字符串、集合和流

最终的ToString方法,当前的StringBuilder对象会根据这个链表以及记录的长度和偏移变量去生成最终的一个String对象实例,StringBuilder的内部实现中使用了一些指针操作,...C#,可以使用System.Text.Encoding来管理常用的编码。   ...这里需要注意的是:为了显示SecureString的内容,程序需要访问非托管内存,因此会用到指针,而要在C#使用指针,则需要使用unsafe关键字(前提是你项目属性勾选了允许不安全代码,对你没看错,...指针C#可以使用,但是被认为是不安全的!)。...例如,一系列的用户界面操作之后,系统的后台可能会得到一个DateTime的数组,而现在的任务则是将它们存储到数据库,而数据库访问层提供的接口只接受String[]参数,这时我们要做的就是把DateTime

1.9K10
领券