C# 转换DateTime.Now from";ar EG";至;“美国”;避免ص/م;时间缩写

C# 转换DateTime.Now from";ar EG";至;“美国”;避免ص/م;时间缩写,c#,datetime,C#,Datetime,我想将DateTime.Now对象从区域性(“ar EG”)转换为区域性(“en us”),以消除[CharStyle/م]时间缩写,因此我使用了这段代码string cnow=DateTime.Now.ToString(新的CultureInfo(“en us”)它工作得很好,但是当尝试使用此代码将其转换回DateTime对象时,我遇到了这个异常 字符串未被识别为有效的日期时间 我不明白为什么会这样。在这种情况下如何进行转换 --更新-- 我必须做这个转换,因为我正试图获得两个不同日期之间的时

我想将DateTime.Now对象从区域性(“ar EG”)转换为区域性(“en us”),以消除[CharStyle/م]时间缩写,因此我使用了这段代码
string cnow=DateTime.Now.ToString(新的CultureInfo(“en us”)它工作得很好,但是当尝试使用此代码将其转换回DateTime对象时,我遇到了这个异常

字符串未被识别为有效的日期时间

我不明白为什么会这样。在这种情况下如何进行转换

--更新--

我必须做这个转换,因为我正试图获得两个不同日期之间的时间跨度,两个不同的文化,如上所述

--更新2--


这种转换的必要性是因为我的应用程序将在许多不同的区域性上运行,并且在将这些日期插入数据库时会出现错误。

使用(
CultureInfo
实现
IFormatProvider
)。否则,将使用当前区域性进行解析。

使用(
CultureInfo
实现
IFormatProvider
)。否则,当前区域性将用于解析。

您可以使用此我希望帮助您解决问题:

您可以使用此我希望帮助您解决问题:

我找到了线索,只是我将强制我的整个应用程序在特定的区域性上工作,而不是在应用程序代码的一开始就使用以下代码行依赖Windows当前区域性:

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

我找到了线索,只是我将强制我的整个应用程序在特定的区域性上工作,而不是在应用程序代码的最开始使用以下代码行依赖Windows当前区域性:

System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

A
DateTime
存储自01/01/0001开始的午夜以来发生的100ns间隔数。它不包含任何字符串<代码>日期时间。现在
在完全相同的时间使用两个不同的区域性从两个不同的线程调用将返回两个相同的值。Re:您的更新,不,它们根本不记得区域性。就像我说的,就是这样。这是唯一的实例字段,一个
UInt64
,带有两个高位,用于实现
Kind
属性。无论您的问题是什么,如果您使用的是两个
DateTime
对象,它不是一个格式或区域性问题您使用
en US
区域性创建了一个字符串,但您希望使用
ar EG
解析它(至少我假设它是您的
当前区域性
)。你看到这里出了什么问题吗?如果你没有使用任何区域性作为
DateTime.Parse
方法的参数,它将使用你的
CurrentCulture
设置。在您的情况下,它似乎不同于
en-US
。Re:update 2-同样,您会收到错误,因为您正在执行字符串转换。如果您始终将所有内容保存在
DateTime
变量中,并将数据作为参数传递到数据库,而不是(大概)强制进行字符串转换并通过字符串连接建立查询,那么a)您将不会有任何区域性/格式问题,b)您将避免SQL注入。出现任何格式/区域性问题的原因是,在某个地方或其他地方,您正在获取格式良好的数据并将其转换为字符串。
DateTime
存储自01/01/0001开始的午夜以来发生的100ns间隔数。它不包含任何字符串<代码>日期时间。现在在完全相同的时间使用两个不同的区域性从两个不同的线程调用将返回两个相同的值。Re:您的更新,不,它们根本不记得区域性。就像我说的,就是这样。这是唯一的实例字段,一个
UInt64
,带有两个高位,用于实现
Kind
属性。无论您的问题是什么,如果您使用的是两个
DateTime
对象,它不是一个格式或区域性问题您使用
en US
区域性创建了一个字符串,但您希望使用
ar EG
解析它(至少我假设它是您的
当前区域性
)。你看到这里出了什么问题吗?如果你没有使用任何区域性作为
DateTime.Parse
方法的参数,它将使用你的
CurrentCulture
设置。在您的情况下,它似乎不同于
en-US
。Re:update 2-同样,您会收到错误,因为您正在执行字符串转换。如果您始终将所有内容保存在
DateTime
变量中,并将数据作为参数传递到数据库,而不是(大概)强制进行字符串转换并通过字符串连接建立查询,那么a)您将不会有任何区域性/格式问题,b)您将避免SQL注入。出现任何格式/区域性问题的原因是,在某个地方或其他地方,您正在获取格式良好的数据并将其转换为字符串。转换为字符串或从字符串转换为字符串是毫无意义的-如果它成功地转换回
日期时间
,并且没有丢失任何信息,与启动时的值完全相同的值将作为输出。转换为字符串或从字符串转换为字符串是毫无意义的-如果成功地将其转换回
日期时间
,并且没有丢失任何信息,则与启动时的值完全相同的值将作为输出。这是唯一的链接答案。作为评论不是更好吗?这是唯一的链接答案。作为评论不是更好吗?