我使用WPF
和C#
正在使用.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"
吗?
答案 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
之后拆分日期并再次合并字符串,希望这对你有帮助。