C#计算工龄/年龄


C#计算工龄

  1. 如果超过一年,算1年
  2. 不足一年的,按照已过天数/总天数 计算百分比,保留2位小数点,(舍去算法)
C# 全选
/// <summary>
/// 计算工龄
/// </summary>
/// <param name="time1"></param>
/// <param name="time2"></param>
/// <returns></returns>
public static double CalcYear(DateTime time1, DateTime time2)
{
	var year = time2.Year - time1.Year;
	if (time2.Month < time1.Month || (time2.Month == time1.Month && time2.Day < time1.Day))
	{
		year = year - 1;
	}

	var nearYear = new DateTime(time2.Year - 1, time1.Month, time1.Day);
	if (time2.Month > time1.Month || (time2.Month == time1.Month && time2.Day >= time1.Day))
	{
		nearYear = new DateTime(time2.Year, time1.Month, time1.Day);
	}
	int days = (nearYear.AddYears(1) - nearYear).Days;
	var dotValue = Math.Floor((time2 - nearYear).TotalDays * 100 / days) / 100;
	return year + dotValue;
}

测试:

C# 全选
List<string[]> testGroups = new List<string[]>()
{
	new string[]{ "2022-02-01", "2023-01-01" },
	new string[]{ "2022-02-01", "2023-02-03" },
	new string[]{ "2022-02-01", "2024-01-31" },
	new string[]{ "2022-02-01", "2024-02-02" },
	new string[]{ "2022-02-01", "2024-02-01" }
};
foreach (var g in testGroups)
{
	DateTime timeStart = DateTime.Parse(g[0]);
	DateTime timeEnd = DateTime.Parse(g[1]);
	var value = Tools.CalcYear(timeStart, timeEnd);
	Console.WriteLine($"{timeStart.ToString("yyyy-MM-dd")} 至 {timeEnd.ToString("yyyy-MM-dd")} 计算值:{value}");
}

输出内容:

2022-02-01 至 2023-01-01 计算值:0.91

2022-02-01 至 2023-02-03 计算值:1

2022-02-01 至 2024-01-31 计算值:1.99

2022-02-01 至 2024-02-02 计算值:2

2022-02-01 至 2024-02-01 计算值:2

 

C#计算年龄

C# 全选
/// <summary>
/// 计算年龄
/// </summary>
/// <param name="brithday"></param>
/// <returns></returns>
public static int CalcAge(DateTime brithday)
{
	var today = DateTime.Today;
	var year = DateTime.Today.Year - brithday.Year;
	if (today.Month < brithday.Month || (today.Month == brithday.Month && today.Day < brithday.Day))
	{
		year = year - 1;
	}
	return year;
}

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:系统Icon图标规范,参考线
下一篇:C#类型转换,对象转换
评论列表

发表评论

评论内容
昵称:
关联文章

C#计算工龄/年龄
微信支付:C#计算签名
C#计算两个日期之间的整月
SQL计算MD5
东方财富网站接口调用时间戳计算规则
微信支付:C#计算签名
dotnet C# 根据椭圆长度和宽度和旋转角计算出椭圆中心点的方法
算法:计算两个大量数据的数组交集,差集,并集,(数据差异)
微信支付:签名计算.net4.5
C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
C# 执行Javascript脚本
C#性能优化总结
C#加密:MD5加密
AgGrid Options列宽度计算
C# MEF插件化开发
c# Quartzs定时器的简单使用
插件配置界面高度计算
C# ASP.NET Core开发学生信息管理系统(三)
C# 时间戳与 标准时间互转
C# SQLServer数据库连接

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码