最近再写一个C#的项目,需输出汉字日期,网上翻了一圈发现写的都比较麻烦。
所以结合网上将数字转换为汉字大写金额的正则,写了个日期转换函数。
public static String ConvertToChineseLite(Decimal number)
{
//将数字转化为汉字
var s = number.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#");
var d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
if (number > 100) d = Regex.Replace(d, "[^0-9]+", ""); //修饰年
var r = Regex.Replace(d, ".", m => "空空空〇一二三四五六七八九空空空空空空空空空十百千万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
if (Math.Floor(number / 10) == 1) r = r.Substring(1, r.Length - 1); //修饰十位为1的情形
return r;
}
public static String Convert2ChineseDate(DateTime dt)
{
string y = ConvertToChineseLite(dt.Year);
string m = ConvertToChineseLite(dt.Month);
string d = ConvertToChineseLite(dt.Day);
return y + "年" + m + "月" + d + "日";
}