- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 C# 的新手,接受了这项任务。我有一个名为 person 的类,其中包含一些详细信息,其中一个是社会安全号码(CPR 号码)。从这个数字我需要计算这个人的年龄。根据作业,如果我理解正确的话,它需要适合这个:
public class Person
{
int _Cpr;
public int Age
{
get
{
return (age calculation from cpr number somehow)
}
}
}
但是我不知道该怎么做 - 我猜我需要比较具有这种形式的社会安全号码整数:DDMMYYXXXX 与当前日期,并返回四舍五入年份的差异 - 但我不知道怎么做。
我开始了解如何计算年龄 - 我仍然迷失的是如何将其放入我的代码中。我的描述说 Age 应该是一个“计算属性”——但据我所知,我无法创建要在类定义中使用的变量,所以我无法真正完成将 Cpr 变成所需的所有步骤年龄 - 可以吗?
最佳答案
我认为这是家庭作业,所以让我尝试将您推向正确的方向,而不是简单地提供答案。
您必须从社会安全号码中提取出生日期。通过 10 的幂进行整数除法,您可以从右边“截断”数字。通过按 10 的幂进行模运算,您可以保留所需的位数:
123456/100 = 1234
1234%100 = 34
在 C# 中,您可以使用 DateTime
类来表示时间点(例如出生日期)。 DateTime.Now
字段包含当前时间。
您想要获得以年为单位的年龄(向下舍入),因此您需要减去两个 DateTime
值的 Year
属性。您还必须考虑此人今年是否已经过生日。
前方剧透
最大的 CPR 是 3112999999,这个数字实际上大于 Int32.MaxValue
。这意味着您必须将 _Cpr
的类型更改为 uint
(或 long
)。下面的代码还考虑了 TheKaneda 描述的从两位数年份获取四位数年份的规则。
public class Person
{
uint _Cpr;
public int Age
{
get
{
int century = (int) ((cpr/1000)%10);
int shortBirthYear = (int) ((cpr/10000)%100);
int birthYear = 1900 + shortBirthYear;
if ((century == 4 || century == 9) && shortBirthYear <= 36)
birthYear += 100;
else if (5 <= century && century <= 8 && shortBirthYear <= 57)
birthYear += 100;
int birthMonth = (int) ((cpr/1000000)%100);
int birthDayOfMonth = (int) ((cpr/100000000));
DateTime birthDate = new DateTime(birthYear, birthMonth, birthDayOfMonth);
DateTime today = DateTime.Now.Date;
DateTime birthDay = new DateTime(today.Year, birthMonth, birthDayOfMonth);
int birthdayAdjustment = today < birthDay ? -1 : 0;
int age = today.Year - birthDate.Year + birthdayAdjustment;
}
}
}
尽管代码出奇地复杂,但它无法处理某人出生于 2 月 29 日的情况。要改进代码,应将其重构为处理提取出生日期和计算年龄的单独部分。最后一部分应该处理 2 月 29 日的问题,根据文化,您可能会发现在非闰年,2 月 29 日出生的人在 2 月 28 日庆祝他们的生日。
关于c# - 从社会安全号码计算年龄 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449680/
// // Social.h // Social // // Copyright (c) 2012 Apple Inc. All rights reserved. // #import #im
我有两个简单的 MySQL 表:用户和关系。 关系表: user_id int(10) unsigned NO PRI friend_id int(10) unsigned
当我访问 127.0.0:8000/associate/twitter 时,我的 django 会获取除电子邮件地址之外的所有 twitter 信息。 访问127.0.0:8000/associate
当我尝试 http://127.0.0.1/login/twitter 时,我看到它会转到 Twitter 进行身份验证,但我看到以下错误 不正确的身份验证服务 我检查了很多次,TWITTER_CON
我是一名优秀的程序员,十分优秀!