private static readonly String cnNumber = "零壹贰叁肆伍陆柒捌玖";
private static readonly String cnUnit = "分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟";
1.在代码中以 Excel 加日期的算法
/// <summary>
/// 传入原日期和所加月数,按照excel加月数算法,返回新日期
/// Excel计算方式和C#的计算方式不一致
/// C#的计算方式:若新日期超出了此月的最大日期数,比如9月31日,新日期为该月的最后一天9月30日
/// Excel的算法: 若新日期超出了此月的最大日期数,比如9月31日,新日期为该月最后一日延后超出的天数即是10月1日
/// </summary>
/// <param name="old_date">原日期</param>
/// <param name="monthNum">所加的月数</param>
/// <returns>新的日期</returns>
public static DateTime Excel计算日期(DateTime old_date, int monthNum)
{
int day = old_date.Day;
DateTime new_date = DateTime.Now;
new_date = old_date.AddMonths(monthNum);
switch (day)
{
case 29:
if (!DateTime.IsLeapYear(new_date.Year) && new_date.Month == 2 && new_date.Day == 28)
{
new_date = new_date.AddDays(1);
}
break;
case 30:
if (new_date.Month == 2)
{
if (DateTime.IsLeapYear(new_date.Year))
{
if (new_date.Month == 2 && new_date.Day == 29)
{
new_date = new_date.AddDays(1);
}
}
else
{
if (new_date.Month == 2 && new_date.Day == 28)
{
new_date = new_date.AddDays(1);
}
}
}
break;
case 31:
if (new_date.Day == 30)
{
if (new int[] { 4, 6, 9, 11 }.Contains(new_date.Month))
{
new_date = new_date.AddDays(1);
}
}
else if (new_date.Day == 29)
{
if (DateTime.IsLeapYear(new_date.Year))
{
new_date = new_date.AddDays(1);
}
}
else if (new_date.Day == 28)
{
if (!DateTime.

本文介绍了一种在Excel中按特定算法加日期的方法,详细解释了C#与Excel日期计算的差异。此外,还提供了数字转大写、人民币金额大小写转换、中文字拼音首字母获取、银行卡号格式化等实用代码片段。

1318

被折叠的 条评论
为什么被折叠?



