转换英语日期与解析完全相同

时间:2016-12-05 10:11:46

标签: c# datetime cultureinfo

我尝试将英语日期转换为德语,但我的格式不好。

$persistenceManager = $this->objectManager->get("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager");
$persistenceManager->persistAll();

出现FormatException .....

2 个答案:

答案 0 :(得分:2)

DateTime.ParseExact用于从DateTime创建string。您可以传递DateTimeFormatCultureInfo,用于将该字符串转换为DateTime

方法不会将其转换为另一个string中的CultureInfo,例如de-DE。因此,您可以使用DateTime.ToString

string germanFormat = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss", new CultureInfo("de-DE"));

答案 1 :(得分:1)

您没有按照自己的意思行事:您的代码实际上会尝试解析 德语格式的日期:

// This is German format
string format = "dd.MM.yyyy HH:mm:ss";

// This takes a date and parses it using the ABOVE FORMAT - which is German
DateTime convertedDate = DateTime.ParseExact(currentCultureDate.ToString(), format, new CultureInfo("de-DE"));

如果您已经有DateTime想要以德语格式输出,那么您不需要ParseExact,而是ToString

string german = DateTime.Now.ToString(format, new CultureInfo("de-DE"));

DateTime本身没有附加任何文化格式。这只是一个日期和时间。只有当你输出一个DateTime时,它才需要转换成一个字符串,为此,需要文化信息。所以经验法则是:

  1. 如果您收到表示日期和时间值的字符串,则需要使用固定格式和DateTime 解析ParseExact或依赖于框架,将源文化信息传递给ParseTryParse
  2. 如果您有DateTime并希望输出,则需要使用ToString对其进行格式化,提供固定格式字符串和文化信息,或者使用{ {1}}仅针对当前线索的文化。