【发布时间】:2018-10-19 14:03:16
【问题描述】:
试图弄清楚如何将世纪前缀(19 或 20)添加到出生日期。有谁知道如何以更好的方式编写这个?
public string GetCenturyPrefix(string socSecNo)
{
string prefix = string.Empty;
try
{
var currentDate = DateTime.Now;
var birthDayTemp = socSecNo.Substring(0, 6);
var yy = birthDayTemp.Substring(0, 2);
var mm = birthDayTemp.Substring(2, 2);
var dd = birthDayTemp.Substring(4, 2);
birthDayTemp = yy + "-" + mm + "-" + dd;
var birthDay = Convert.ToDateTime(birthDayTemp);
var totalDays = currentDate - birthDay;
var age = totalDays.TotalDays / 365;
var yearsAfter2000 = Convert.ToInt32(currentDate.Year.ToString().Substring(2, 2));
if (age > yearsAfter2000)
{
prefix = "19";
}
else
{
prefix = "20";
}
}
catch (Exception)
{
}
return prefix;
}
【问题讨论】:
-
你为什么要
Substring-ing 你的字符串来获取日期组件?为什么不直接使用DateTime.Parse(socSecNo)或.ParseExact(..)? -
这段代码有效吗?如果是这样,这可能对于Code Review 来说是一个更好的问题,但您应该阅读their help center 并确保您愿意接受对整个代码的批评。
-
某事……
birthDay.Year >= 2000? -
最著名/相关的 C# 问题之一是stackoverflow.com/questions/9/…