我尝试将英语日期转换为德语,但我的格式不好。
$persistenceManager = $this->objectManager->get("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager");
$persistenceManager->persistAll();
出现FormatException .....
答案 0 :(得分:2)
DateTime.ParseExact
用于从DateTime
创建string
。您可以传递DateTimeFormat
或CultureInfo
,用于将该字符串转换为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
时,它才需要转换成一个字符串,为此,需要文化信息。所以经验法则是:
DateTime
解析到ParseExact
或依赖于框架,将源文化信息传递给Parse
或TryParse
。DateTime
并希望输出,则需要使用ToString
对其进行格式化,提供固定格式字符串和文化信息,或者使用{ {1}}仅针对当前线索的文化。