sunpengfei
2025-08-29 0a2215fac7b72abba17f816cec53b94e36debdbd
FlexJobApi.Core/Utils/StringUtils/StringUtils.cs
@@ -1,4 +1,5 @@
using Furion.FriendlyException;
using Furion.DataValidation;
using Furion.FriendlyException;
using Mapster.Utils;
using System;
using System.Collections.Generic;
@@ -77,5 +78,68 @@
                return singularName + "s";
            }
        }
        public static bool CheckIsIdentityNumber18(this string identity)
        {
            return identity.IsNotNull() && identity.TryValidate(EnumValidationTypes.ValiIdentity).IsValid && identity.Length == 18;
        }
        /// <summary>
        /// 获取性别
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public static EnumUserGender? GetGender(this string identity)
        {
            if (identity.CheckIsIdentityNumber18())
            {
                return identity[16] % 2 == 0
                    ? EnumUserGender.Female
                    : EnumUserGender.Male;
            }
            else
            {
                return null;
            }
        }
        /// <summary>
        /// 获取生日
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public static DateTime? GetBirthday(this string identity)
        {
            if (identity.CheckIsIdentityNumber18())
            {
                return new DateTime(
                    identity.Substring(6, 4).ToInt()!.Value,
                    identity.Substring(10, 2).ToInt()!.Value,
                    identity.Substring(12, 2).ToInt()!.Value);
            }
            else
            {
                return null;
            }
        }
        /// <summary>
        /// 获取年龄
        /// </summary>
        /// <param name="identity"></param>
        /// <returns></returns>
        public static int? GetAge(this string identity)
        {
            if (identity.CheckIsIdentityNumber18())
            {
                var birthday = identity.GetBirthday();
                return birthday.GetAge();
            }
            else
            {
                return null;
            }
        }
    }
}