如何在C#中更改日期格式'27JAN2017到27JA2017'?

时间:2017-01-27 10:44:06

标签: c# datetime

我使用WPFC#正在使用.Net Framework 4.0个应用程序。我想更改日期的格式并在我的应用程序屏幕中显示。目前,我以mm/dd/yyyy (01/27/2017)的格式显示日期。我想将格式从"01/27/2017"更改为"26JA2017"

我尝试了下面的代码,

value = Convert.ToDateTime(currentDate).ToString("ddMMMyyyy");

上述代码正在将日期从"01/27/2017"更改为"27JAN2017"。我希望它是27JA2017。客户来自法国,他需要日期格式为法语。

有人可以帮助我将日期格式从"27JAN2017"转换为"27JA2017"吗?

5 个答案:

答案 0 :(得分:3)

首先,如果您需要特定语言格式的日期,则应将相应的CultureInfo传递给ToString

.ToString(..., CultureInfo.GetCultureInfo("fr-FR"));

此外,这是不明确的不是标准格式,所以最简单的方法是在几个月内使用查找表并自己构建字符串。

答案 1 :(得分:3)

据我所知,您需要一种加拿大缩写:

http://interglacial.com/pub/text/Canadian_month_abbreviations.html

这是英文/法文名称妥协

  

缩写在点上有点奇怪的原因是   他们的基础是完整的英文月份和   完整的法国月份名称

如果是你的情况,我建议使用自定义日期时间格式:

   // fr-FR - France (The customer is from [Mainland?] France)
   // fr-CA - Canada (Origin of the abbreviations)
   DateTimeFormatInfo caFormat = 
     (DateTimeFormatInfo) (CultureInfo.GetCultureInfo("fr-FR").DateTimeFormat.Clone());

   caFormat.AbbreviatedMonthNames = new string[] { 
     "JA", "FE", "MR", "AL", "MA", "JN", "JL", "AU", "SE", "OC", "NO", "DE", "" };

使用

   DateTime value = new DateTime(2016, 3, 1);  

   // Formatting as usual but with custom format
   String result = value.ToString("ddMMMyyyy", caFormat);

结果

   01MR2016

答案 2 :(得分:0)

我认为您正在引用加拿大标准,正如here所解释的那样 .Net不提供转换,但您可以这样做:

Dictionary<string, string> abbr = new Dictionary<string, string>() {    
                                                                    {"Jan","JA"},
                                                                    { "Feb","FE"},
                                                                    { "Mar","MR"},
                                                                    { "Apr","AL"},
                                                                    { "May","MA"},
                                                                    { "Jun","JN"},
                                                                    { "Jul","JL"},
                                                                    { "Aug","AU"},
                                                                    { "Sep","SE"},
                                                                    { "Oct","OC"},
                                                                    { "Nov","NO"},
                                                                    { "Dec","DE"}

            };
string val = Convert.ToDateTime(DateTime.Now).ToString("ddMMMyyyy",
                                        System.Globalization.CultureInfo.InvariantCulture);

var newstr = abbr.Aggregate(val, (current, value) =>
 current.Replace(value.Key, value.Value));

答案 3 :(得分:-1)

value = Convert.ToDateTime(currentDate).ToString("ddMMyyyy",new CultureInfo("fr-FR"));

答案 4 :(得分:-1)

我不认为它有任何解决方案,但是你可以尝试split()函数并在2 digits of day + two letters of month之后拆分日期并再次合并字符串,希望这对你有帮助。