Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将日期值转换为不变字符串_.net_Date - Fatal编程技术网

.net 将日期值转换为不变字符串

.net 将日期值转换为不变字符串,.net,date,.net,Date,我有一个字符串,其中包含德语格式的日期(dd.MM.yyyy),因此日期分隔符是一个点 我的操作系统是德语,因此默认区域性是德语,默认日期格式如上所示 我需要将此日期字符串转换为固定日期字符串(yyyy/MM/dd) 以下是我的问题: 如果我在做显而易见的事情 Convert.ToDateTime(value, CultureInfo.GetCultureInfo("de-DE")) .ToString(CultureInfo.InvariantCulture)

我有一个字符串,其中包含德语格式的日期(dd.MM.yyyy),因此日期分隔符是一个点

我的操作系统是德语,因此默认区域性是德语,默认日期格式如上所示

我需要将此日期字符串转换为固定日期字符串(yyyy/MM/dd)

以下是我的问题:

如果我在做显而易见的事情

Convert.ToDateTime(value, CultureInfo.GetCultureInfo("de-DE"))
       .ToString(CultureInfo.InvariantCulture)
我在不变区域性中获得字符串,但它也包含不需要的时间部分,因此我得到例如“2020/11/09 00:00:00”

所以我想,我会告诉.NET,我只想要
ShortDataPattern
这样的

Convert.ToDateTime(value, CultureInfo.GetCultureInfo("de-DE"))
       .ToString(CultureInfo.InvariantCulture.DataTimeFormats.ShortDatePattern)
但由于不变区域性的
ShortDatePattern
yyyy/MM/dd
,并且我在一台德国计算机上,其中日期分隔符是一个点,因此我得到了“2020.11.09”

我能想到的唯一其他方法是有点骇客,比如使用第一种方法和通过字符串操作削减时间部分。或者不使用
CultureInfo.InvariantCulture.DataTimeFormats.ShortDatePattern
而使用
yyyy\/MM\/dd
(屏蔽要用作文本的斜杠)


无论我所在的计算机的文化背景如何,有没有其他不太老套的方法来获取没有时间不变格式的日期字符串?

只需执行
value.ToString(“yyyy/MM/dd”,CultureInfo.InvariantCulture)
。请注意,这不是不变区域性的本机格式;这将是
value.ToString(“d”,CultureInfo.InvariantCulture)
,并给出
11/09/2020
(dd/MM/yyyy)。不变量!=全球标准,如果您想要ISO 8601日期,我建议您坚持使用
yyyy-MM-dd
。感谢您朝着正确的方向努力。我想避免提供任何自定义格式信息,所以我选择了
Convert.ToDateTime(value,CultureInfo.GetCultureInfo(“de”)).ToString(CultureInfo.InvariantCulture.DateTimeFormat.ShortDatePattern,CultureInfo.InvariantCulture)
。。。或者
yyyyMMdd
(这是ISO8601的另一个变体)我知道ISO格式,但是我们的客户希望字符串具有不变的值,所以我必须坚持使用这些格式。从技术上讲
“d”
不是自定义格式,它是一种。它的效果与显式使用
ShortDatePattern
完全相同,但它的时间更短。(也不能意外地与“错误”的区域性组合。)只需执行
value.ToString(“yyyy/MM/dd”,CultureInfo.InvariantCulture)
。请注意,这不是不变区域性的本机格式;这将是
value.ToString(“d”,CultureInfo.InvariantCulture)
,并给出
11/09/2020
(dd/MM/yyyy)。不变量!=全球标准,如果您想要ISO 8601日期,我建议您坚持使用
yyyy-MM-dd
。感谢您朝着正确的方向努力。我想避免提供任何自定义格式信息,所以我选择了
Convert.ToDateTime(value,CultureInfo.GetCultureInfo(“de”)).ToString(CultureInfo.InvariantCulture.DateTimeFormat.ShortDatePattern,CultureInfo.InvariantCulture)
。。。或者
yyyyMMdd
(这是ISO8601的另一个变体)我知道ISO格式,但是我们的客户希望字符串具有不变的值,所以我必须坚持使用这些格式。从技术上讲
“d”
不是自定义格式,它是一种。它的效果与显式使用
ShortDatePattern
完全相同,但它的时间更短。(也不能意外地与“错误”的文化相结合。)