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

在C#中解析确切日期不应该强制您创建IFormatProvider

在C#中解析确切日期不应该强制您创建IFormatProvider。C#是一种面向对象的编程语言,它支持多种编程范式,包括面向对象编程、函数式编程和命令式编程。在C#中,解析确切日期通常涉及到DateTime类型和相关的方法。

DateTime类型是C#中的一个基本类型,它表示一个时间点,包括日期和时间。DateTime类型提供了许多方法和属性,可以用于解析日期和时间。例如,可以使用Parse()、TryParse()、ParseExact()和TryParseExact()等方法来解析日期和时间。这些方法通常需要一个字符串参数,该字符串表示要解析的日期和时间。

在C#中,IFormatProvider接口用于提供格式化和解析操作所需的特定于区域性的信息。例如,可以使用CultureInfo类型来实现IFormatProvider接口,以提供特定区域性的格式化和解析操作所需的信息。

然而,在解析确切日期时,不应该强制用户创建IFormatProvider。这是因为,在许多情况下,用户可能不需要提供特定的区域性信息。相反,可以使用默认的区域性信息来解析日期和时间。在C#中,可以使用CultureInfo.InvariantCulture属性来获取一个不受任何特定区域性影响的默认CultureInfo对象。

因此,在C#中解析确切日期时,应该允许用户选择是否提供IFormatProvider。如果用户选择提供IFormatProvider,则应该使用提供的IFormatProvider来解析日期和时间。如果用户选择不提供IFormatProvider,则应该使用默认的区域性信息来解析日期和时间。

总之,在C#中解析确切日期时,不应该强制用户创建IFormatProvider。相反,应该允许用户选择是否提供IFormatProvider,并根据用户的选择来解析日期和时间。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

前言 上一篇内容介绍了Console类和Math类,这篇内容着重介绍一下C#中时间日期的处理方式。 上一篇勘误:上一篇中关于静态类没有构造函数,这一表述有误。...在C#中,这两个都是结构体,结构体与类都能继承并实现接口,但是与类不同的是结构体在内存中存放在栈里。这部分在微软官方文档中关于CLR有过介绍。后续也会针对CLR写一个系列。这里就不做过多的介绍了。...,以公历 0001 年 1 月 1 日 00:00:00.000 以来所经历的以 100 纳秒为间隔的间隔数来表示 这些是我们常用的创建日期的方法,还有一些通过日历对象结合日历来创建日期时间,不过这块在不涉及到程序国际化之前不需要做过多的深入...C#并不需要在字符串转日期的时候指定字符串的显示格式,这是因为一个约定优于配置的设计理念。C#通过分析字符串,然后将字符串转换成对应的时间类型。当然,在正确解析到时间的时候,C#会抛出异常。...别急,C#还提供了一个方法: public static DateTime ParseExact (string s, string format, IFormatProvider provider);

2.2K30
  • (持续整理中)Visual Studio 中 C# 代码分析规则集中每一项的含义 (stylecop ruleset)

    (持续整理中)Visual Studio 中 C# 代码分析规则集中每一项的含义 (stylecop ruleset) 发布于 2018-02-07 13:55...但是在修改规则的时候发现规则的名称都是在用我懂的每一个字描述我一点都不懂的概念,于是打算一个个尝试以找出每一个代码分析的实际意义。 在整理的过程当中,发现要么是名称看不懂,要么是错误提示看不懂。...方法参数中应该尽量避免使用 ref 参数 全球化与本地化问题 编号 名称 含义 CA1305 指定 IFormatProvider 如果格式化字符串(string.Format 或者 $""),应该指定区域相关的属性...性能问题 编号 名称 含义 CA1800 避免进行不必要的强制转换 如果多次对同一个引用进行 as,则会出现此提示,应该仅转换一次,例如使用 value is var xxx CA1801 检查未使用的参数...编号 名称 含义 CA2007 不应该直接 await 一个而不调用 ConfigureAwait 建议阅读 在编写异步方法时,使用 ConfigureAwait(false) 避免使用者死锁 了解这样提示的原因

    1.9K20

    C# 基础知识系列-13 常见类库(三)

    前言 在《C# 基础知识系列- 13 常见类库(二)》中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作。...自动解析字符串格式,第二种由调用方明确指出字符串的格式。...在C#中struct无法置为NULL,一般情况下并不影响程序的运行。但是,如果涉及到交互,无论是与人还是与其他的系统交互,都会出现数据不可用的情况。...这时候如果在系统中简单的使用 int或者double存成绩就会出现NULL无法存入系统。 C#为了解决此类问题,添加了Nullable,这是个结构体,C#为此添加了额外的支持。...放心吧,都会在以后的篇幅中为大家一一介绍的。

    1.5K40

    C# this关键字(给底层类库扩展成员方法)

    本文参考自唔愛吃蘋果的C#原始类型扩展方法—this参数修饰符,并在其基础上做了一些细节上的解释 1、this作为参数关键字的作用 使用this关键字,可以向this关键字后面的类型添加扩展方法,而无需给其创建新的派生类型...、静态类的特点,如果一个静态类没有加构造函数,那么编译器会自动的给它加一个静态构造函数,静态构造函数是最早被调用的,只要有静态访问,那就先调用静态构造函数,接着调用非静态构造函数,而且静态类里面的成员在第一次被访问之后...而且静态类中不能有成员变量,this关键字是个列外 (3)、当类是静态类时,程序会在编译的时候,就将所有的静态成员编译到全局环境中,当类不是静态类的时候,只有当类中的静态成员被调用之后,才会被初始化到全局环境中...下一次调用就不需要初始化了直接去全局环境中取,所以这个时候 ?...实际上,扩展方法无法访问它们所扩展的类型中的私有变量,不信你可以试试在扩展方法中访问string的私有成员!!!

    1.1K70

    类型自定义格式字符串

    然而它不应该仅仅是用来输出类型的名称,如果使用得当,它可以方便地输出我们对类型自定义的格式。...在本例中,我们是对Friend这一类型进行格式化,那么这个formatType 的值就相当于 typeof(Friend),或者 f.GetType() (f为Friend类型的实例)。...现在我们就来创建实现IFormatProvider接口的类型了,与上面的方式稍稍有些不同:通过Reflector工具(不知道的可以去百度一下)可以看到,调用 String.Format() 时内部会创建一个...在.Net中,将语言环境进行封装的类是 CultureInfo,并且它实现了IFormatProvider,当我们需要明确指定金额的显示方式时,可以借助这个类来完成: int money = 100;...我们还讨论了实现IFormatProvider和ICustomFormatter的两种方式:创建一个类实现它们,或者各自实现为不同的类。

    58530

    查找 Linux 文件:查找命令使用完整指南

    在命令行中按名称、部分名称或日期查找文件的最简单方法 如果要在 Linux 系统上查找文件,find 命令可以轻松实现。您可以使用“查找”按名称、部分名称、日期、修改时间、大小等搜索文件。...如果您知道文件位于哪个目录中,则可以在 find 命令中指定该目录。如果没有,您可以从根 (/) 目录开始搜索整个 Linux 系统。...如果您知道文件的确切名称,您将完整键入它。如果没有,您可以在搜索词中的任何位置使用通配符。 例如,若要查找计算机上的所有配置文件,可以使用 .这将返回以 .conf 结尾的文件的名称。...find / -type f -iname "*.conf" 用于按确切名称搜索文件。find /path -iname filename如果您知道文件的确切名称和目录,则可以使用此命令来查找它。...-type f -mmin -10 使用 和 按上次访问日期或创建日期查找文件。

    3.6K10

    .NET 零开销抽象指南-hez2010

    近些年由于 .NET 团队在高性能和零开销设施上的需要,从 2017 年开始,这些成果逐渐被加入 CLR 和 C# 中,从而能够让 .NET 团队将原先大量的 C++ 基础库函数用 C# 重写,不仅能减少互操作的开销...例如 Visual Studio 2019 的 16.5 版本将原先 C++ 实现的查找与替换功能用 C# 重写之后,更是带来了超过 10 倍的性能提升,在十万多个文件中利用正则表达式查找字符串从原来的...为了提升 in 的易用性,C# 为其加入了隐式引用传递的功能,即调用时不需要在调用处写一个 in,编译器会自动为你创建局部变量并传递对该变量的引用: void Foo(in Mat3x3 mat) {...从 C# 7 开始,我们可以在方法中返回引用,例如: ref int Foo(int[] array) { return ref array[3]; } 调用该函数时,如果通过 ref 方式调用...因此我们在 C# 11 中迎来了 ref 和 ref readonly 字段。

    66230

    ASP.NET SignalR2持久连接层解析

    SignalR自动处理连接管理,并允许您同时向所有连接的客户端广播消息。SignalR支持“服务器推送”功能,其中服务器代码可以使用远程过程调用(RPC)在浏览器中调用客户端代码。...SignalR提供了一个用于创建从服务器端.NET代码调用客户端浏览器(和其他客户端平台)中的JavaScript函数的服务器到客户端远程过程调用(RPC)的简单API。...SignalR提供了一个用于创建从服务器端.NET代码调用客户端浏览器(和其他客户端平台)中的JavaScript函数的服务器到客户端远程过程调用(RPC)的简单API。...在ASP.NET SignalR的持久连接层中,有一个核心对象:PersisterConnection类,接下来我们具体了解一下这个类的一些方法。...二.ASP.NET SignalR持久连接层服务端核心对象方法解析:     ASP.NET SignalR中的每一个持久层都可以通过某一个URL从外部进行访问。

    2.6K90

    java iso8601 PT1M,iso8601

    由于某种原因,它在Chrome中可以正常运行,但在Firefox中会导致“无效日期”错误.确切的行是: var date = new Date(time.replace(/-/g,”/”).replace...解决方法:这对我有用,它使用正则表达式来确保日期是您想要的格式,然后尝试解析日期并重新创建它以确保输出与输入匹配: $date = ’20 参见英文答案 > Convert timestamps with...我有一个文件.在Python中,我想花费它的创建时间,并将其转换为ISO time (ISO 8601) string,同时保留它在Eastern Time Zone(ET)中创建的事实....-09-03T20:56:35.450686Z”这样的RFC 3339字符串解析为Python的日期时间类型....3个 我一直在解析ISO8601 TimeSpan值一段时间,直到我遇到一个导致我的代码抛出System.FormatException: TimeSpan ts = XmlConve 现在我只计算从第一个到最后一个日期的星期四的数量

    14.1K180

    5个REST API安全准则

    REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。...2 - 输入验证 帮助用户将高质量的数据输入到您的Web服务中,例如确保邮政编码对提供的地址有意义,或日期有意义。 如果不是,拒绝该输入。...(3)XML编码 XML绝不应该由字符串连接构建。 它应该始终使用XML序列化器构造。 这确保发送到浏览器的XML内容是可解析的,并且不包含XML注入。...4 - 加密 (1)传输中的数据 除非公共信息是完全只读的,否则应强制使用TLS,特别是在执行凭证更新、删除和任何事务操作时。...一些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全的,这意味着它们仅用于信息检索,并且不应该更改服务器的状态。在设计和构建REST API时,您必须注意安全方面。

    3.8K10

    每个 .NET 开发人员解决常见问题时都应该了解的 5 个 EF Core 功能

    全局查询过滤器:避免重复的过滤逻辑 问题:您是否厌倦了在每个查询中为“软删除”实体添加相同的筛选条件? 解决方案:使用 EF Core 中的全局查询筛选器在实体的所有查询中自动应用条件。...解决方案:影子属性允许您存储元数据,而无需将其直接包含在 C# 类中。它们非常适合像 or 这样的审计数据,您可能在数据库中需要这些数据,但不想成为主域模型的一部分。...拦截器:集中式 SQL 命令日志记录和控制 问题:想要确切了解 EF Core 向数据库发送的 SQL 命令?或者,也许您需要在执行命令之前对其进行修改?...解决方案:拦截器是强大的工具,可让您挂接到数据库命令的生命周期中。它们特别适用于记录、调试或修改命令以强制实施自定义规则。...解决方案:价值转化允许您以所需的格式存储数据。无论是将枚举转换为字符串,还是管理不同类型的单位,值转换都可以弥合 C# 代码与数据在数据库中的表示方式之间的差距。

    12410

    Webpack的奇妙世界

    JavaScript中的模块引起的依赖问题; 特别是Node.js. Node.js允许您模块化代码。 代码的模块化导致依赖关系的问题。 可能会发生循环依赖,例如,A - > B - > A引用。...您可以创建自己的加载程序,并且有100个或者更多的第三方加载程序。 例如,有没有一个Loaders使我们可以采用像C#这样的静态类型语言,并将其转化为JavaScript?...所以回到我们前面的例子,我们可以用C#作为输入,并创建一个解析器,将它转化为Webpack希望的本地JavaScript。...其结果是将在emit之前打印日期日志,emit之后打印日期日志 在Webpack配置文件中可以这样子配置: var MyCustomPlugin = require('my-custom-plugin'...它需要您的依赖关系图,并输出浏览器可以读的格式。 但是webpack能做的不止这些 如果我们可以采用C#代码,并将其转换成JavaScript?

    55720

    编写高质量代码改善C#程序的157个建议

    建议14、正确实现浅拷贝和深拷贝 为对象创建副本的技术成为拷贝(也叫克隆)。我们将拷贝分为浅拷贝和深拷贝。 浅拷贝 将对象中的所有字段复制到新的对象(副本)中。...其中,值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。 ...而引用类型的字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身。 深拷贝 同样,将对象中的所有字段复制到新的对象中。...也就是说,在浅拷贝过程,我们应该将字符串看成是值类型。Employee的Department属性是一个引用类型,所以,如果改变了源对象Niki中的值,那么副本Kris中的值也会随之一起变动。  ...dynamic的出现让C#具有了弱类型的特性。编译器在编译的时候不再对类型进行检查,编译器默认dynamic对象支持开发者想要的任何类型。

    42330

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

    在这篇文章中,我在介绍 C# 历史版本的同时分享我最喜欢的特性,在强调实用性的同时展示其优点。...这些是您应该注意的性能考虑事项。 泛型解决了这一切,同时也增加了类型安全性。让我们修改前面的例子,在类中包含一个类型参数 T ,并注意方法签名的变化。...在迭代内是一个 if 逻辑块,用于检查天气数据是否在特定的日期范围内。...当您使用 async 关键字修改返回方法时,它将使方法主体能够使用await 关键字。在评估 await 关键字时,控制流将返回给调用者,并在该方法中的那一点暂停执行。...有时开发人员采取相同的模式,无论解析是否成功。有时可以使用默认值。C# 7.0中的 out变量使得这个更加复杂,尽管我不觉得复杂。

    17230

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

    在这篇文章中,我在介绍 C# 历史版本的同时分享我最喜欢的特性,在强调实用性的同时展示其优点。...这些是您应该注意的性能考虑事项。 泛型解决了这一切,同时也增加了类型安全性。让我们修改前面的例子,在类中包含一个类型参数 T ,并注意方法签名的变化。...在迭代内是一个 if 逻辑块,用于检查天气数据是否在特定的日期范围内。...当您使用 async 关键字修改返回方法时,它将使方法主体能够使用await 关键字。在评估 await 关键字时,控制流将返回给调用者,并在该方法中的那一点暂停执行。...有时开发人员采取相同的模式,无论解析是否成功。有时可以使用默认值。C# 7.0中的 out变量使得这个更加复杂,尽管我不觉得复杂。

    20420

    「企业合规」开发符合GDPR标准的应用程序的15个步骤

    “数据可移植性的权利:在服务提供商之间传输您的个人数据会更容易。” “澄清'被遗忘权':当您不再希望处理数据时,如果没有合法理由保留数据,则数据将被删除。”...在Ashley Madison数据泄露事件中,所有个人数据都是明文,这对用户造成了巨大影响。...切勿在日志中包含更多敏感信息,如密码。 9.将日志存储在安全的地方,最好是加密的 将包含用户信息的任何日志保存在安全的位置,并告知用户这些日志会发生什么:它们的存储方式以及保留时间。...10.安全问题不应该打开用户的个人数据 在许多应用程序中,安全问题用作确认用户身份的表单。这些问题不应包括个人成分,如母亲的婚前姓名,甚至用户喜欢的颜色。如果可能,请使用双因素身份验证替换这些问题。...强制执行机制是必要的,以便用户在被允许访问应用程序之前必须同意条款和条件,尤其是在条款已更改时。条款和条件也应该使用易于理解的语言。

    94820

    【5min+】传说中的孪生兄弟? Memory and Span

    它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net知识等等。 5min+不是超过5分钟的意思,"+"是知识的增加。...so,它是让您花费5分钟以下的时间来提升您的知识储备量。 正文 在上一篇文章:《闪电光速拳? .NetCore 中的Span》 中我们提到了在.net core 2.x 所新增的一个类型:Span。...但是您会发现它无法用在我们项目的某些地方,它独特的 ref结构 使它没有办法跨线程使用、更没有办法使用Lambda表达式。 ? 特别是在AspNetCore中,咱们会使用到大量的异步操作方法。...好像有点超纲了哈(>人<;) 按照MSDN给出的解释: 该结构是使用中的C# ref struct 关键字声明的。 不能将类似 byref 的结构的实例放置在托管堆上。...所以这也是为什么上一篇文章说的:Span只能放置在内存栈中的原因。 那么反过来想,没有了ref关键字之后。Memory是不是就可以放置在托管堆上了呢?

    52930

    DotNet 资源大全中文版(Awesome最新版)

    StyleCop - StyleCop分析C#源代码来强制执行一组样式和一致性规则 Gendarme - 可扩展的基于规则的工具,可以在.NET应用程序和库中找到问题 Metrics-Net - 捕获CLR...允许您创建具有语法高亮显示的自定义文本编辑器。 它适用于小,中,大和非常大的文件。...该库包含可扩展的Markdown解析器作为核心组件 CommonMark.NET -在C#中实现CommonMark规范,将Markdown文档转换为HTML。 针对最大的性能和可移植性进行了优化。...- 基于微软Razor解析引擎的开源模板引擎 Nustache - 用于无逻辑模板的开源库 Stubble - 在.NET中修剪{{mustache}}模板。...Net和Mono上构建基于HTTP的服务 IISNode - 主机NodeJS应用程序在IIS中 Suave.IO - 框架/图书馆/网络服务器,让您在完成您的项目提前完成您的项目时,看到您在[F#]中编写的美丽代码

    16.4K82
    领券