如何更改日期格式';2017年1月27日至2017年1月27日;在C#中?
我正在使用如何更改日期格式';2017年1月27日至2017年1月27日;在C#中?,c#,datetime,C#,Datetime,我正在使用C和.netframework4.0开发WPF应用程序。我想更改应用程序屏幕中日期和显示的格式。目前,我正在以这种格式显示日期-mm/dd/yyyy,即(2017年1月27日)。我想将格式从“01/27/2017”更改为“26JA2017” 我试过下面的代码 value = Convert.ToDateTime(currentDate).ToString("ddMMMyyyy"); 上述代码将日期从2017年1月27日更改为2017年1月27日。我希望它是2017年7月27日。客户来
C
和.netframework4.0
开发WPF
应用程序。我想更改应用程序屏幕中日期和显示的格式。目前,我正在以这种格式显示日期-mm/dd/yyyy
,即(2017年1月27日)
。我想将格式从“01/27/2017”
更改为“26JA2017”
我试过下面的代码
value = Convert.ToDateTime(currentDate).ToString("ddMMMyyyy");
上述代码将日期从2017年1月27日更改为2017年1月27日。我希望它是2017年7月27日。客户来自法国,他需要日期格式为法语
你们谁能帮我把日期格式从
“2017年1月27日”
转换成“2017年1月27日”
首先,如果您需要特定语言格式的日期,您应该将相应的CultureInfo
传递到ToString
:
.ToString(..., CultureInfo.GetCultureInfo("fr-FR"));
此外,这是不明确的,不是一种标准格式,因此最简单的方法是在几个月内使用一个查找表,然后自己构造字符串。我不认为它有任何解决方案,但您可以尝试
split()
函数,并通过在日期的两位数+月份的两个字母后拆分日期,再次合并字符串,希望对您有所帮助 我认为您所指的是加拿大标准,正如所解释的那样
value = Convert.ToDateTime(currentDate).ToString("ddMMyyyy",new CultureInfo("fr-FR"));
.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));
Dictionary abbr=newdictionary(){
{“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”,
系统、全球化、文化信息、不变文化);
var newstr=缩写聚合(val,(当前,值)=>
当前.Replace(value.Key,value.value));
据我猜测,您需要加拿大的缩写:
哪个是英文/法文名称
缩略语在某些方面有点奇怪的原因是
它们基于完整的英文月份名称和
完整的法国月份名称
如果是您的情况,我建议使用自定义日期时间格式:
// 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", "" };
使用
结果
01MR2016
3月1日和5月1日会是什么样子?它们是否都是2017年01月01日?六月/七月也一样吗?是来自
Janvier
还是一月的JA
?四月会是APAP
还是AV
?事实上——由于模棱两可,基本上这是一个非常糟糕的主意。这就是为什么框架中不支持它…这不是一种法语格式。这只是一些系统的自定义格式。您必须创建一个查找数组-只需创建一个包含名称的12个元素数组,并使用[date.Month-1]
作为索引,它表示法语日期格式为dd-mm-yyyy(dd=2位日,mm=2位月,yyyy=4位年),并且它将ISO规范声明为“NF EN 28601”-所以我支持你的客户想要一些非常奇怪的东西的声音。(我现在不会对法国人发表任何声明;)哈哈)MM
不是指“两个字母的月”-它是指“两位数的月”。什么Split
功能?DateTime没有拆分函数,字符串也没有任何分隔符。从日期值本身检索日期元素就像调用date.Month
@PanagiotisKanavos一样简单,我认为它们的意思是子字符串
@ethalcoder字符串操作是一个坏主意,因为您可以直接从日期获取月份object@PanagiotisKanavos我知道,这不是我的想法。查找会很容易-只有一个带有月份缩写的字符串[12]
<代码>日期。第一个月可以用作索引
01MR2016