2013-05-06 73 views
1

我使用法国全日期

DateTime.Now.ToString("dddd dd MMMM yyyy",new CultureInfo(user.CultureCodeISO2) 

对于荷兰的日期。 现在我的要求发生了变化,我需要支持法语和英语的完整日期。

在我看来,像有没有通用的解决方案,结果在一个正确的日期在所有3种语言...特别是下面的棘手的部分标记为粗体

15décembre2012 | 2012年12月15日

le 29 mars 2011 | 2011年3月29日

le 1er avril 2011 | 2011年4月1日

我是否真的需要编写一个自定义函数来添加文件并根据文化改变格式的顺序?

ToLongDateString()不适用于我,这会导致例如“mercredi 31décembre2003年的” 没有

+0

为什么结果不正确? – 2013-05-06 09:18:33

+1

没有“乐”,你认为日期不正确? – 2013-05-06 09:18:34

+0

因为我的翻译人员告诉我它必须是这样的,它用于打印PDF信。我只是按照订单 – 2013-05-06 10:27:29

回答

1

我不知道你的用户对象是什么以及它在CultureCodeISO2提供。我想这是文化标识符的一个整数。

正如您在下面的链接中看到的,文章没有模式。 如果你想这篇文章,那么你可能需要声明你自己的格式:

Custom Date and Time Format Strings

如果我是你,我会写一个扩展方法调用ToString方法内部并添加取决于所选语言的文章。

public static string ToStringWithArticle(this DateTime dateTime, string format, IFormatProvider provider) 
    { 
     var dateTimeString = dateTime.ToString(format, provider); 
     if (provider == new CultureInfo("fr-BE") || provider == new CultureInfo("fr-FR")) 
     { 
      dateTimeString = "le " + dateTimeString; 
     } 
     return dateTimeString; 
    } 

你猜我的意思是?

+0

这正是我想要避免在这里,因为每当新文化弹出在需求清单上,我将不得不修复这件事。但我想我必须使用这种变体,因为似乎没有内建的解决方案,我可以信任... – 2013-05-07 09:11:31

+0

我知道,这是没有好的感觉解决方案。但通过扩展方法,它可以很好地解决问题,因为您只需要一个中心点就可以更改某些内容。 – Max 2013-05-07 09:29:59

+0

+1将它放入扩展方法的想法;-) – 2013-05-07 09:34:21