c# - والشهور - طريقة طرح التواريخ يدويا




احسب الفرق بين تاريخين واحصل على القيمة بالسنوات؟ (4)

Math.Round (DateTime.Now.Subtract (تاريخ الميلاد) .TotalDays / 365.0)

كما أشار ، هذا لن ينجح. يجب عليك القيام بذلك:

(Int32)Math.Round((span.TotalDays - (span.TotalDays % 365.0)) / 365.0);

وعند هذه النقطة يكون الحل الآخر أقل تعقيدًا ولا يزال دقيقًا على امتدادات أكبر.

تحرير 2 ، ماذا عن:

Math.Floor(DateTime.Now.Subtract(DOB).TotalDays/365.0)

المسيح أنا تمتص الرياضيات الأساسية في هذه الأيام ...

ممكن تكرار:
كيف يمكنني حساب عمر شخص ما في C #؟

أريد حساب عمر الموظفين بشكل أساسي - لذلك لدينا DOB لكل موظف ، لذا على الجانب C # أريد أن أفعل شيئًا كهذا -

int age=Convert.Int32(DateTime.Now-DOB);

يمكنني استخدام الأيام والتلاعب ثم الحصول على العمر ... لكنني أردت أن أعرف ما إذا كان هناك شيء يمكنني استخدامه مباشرة للحصول على عدد السنوات.


طرح اثنين من DateTime يعطيك TimeSpan مرة أخرى. لسوء الحظ ، فإن أكبر وحدة تعطيك العودة هي أيام.

على الرغم من عدم الدقة ، يمكنك تقدير ذلك ، مثل هذا:

int days = (DateTime.Today - DOB).Days;

//assume 365.25 days per year
decimal years = days / 365.25m;

تحرير: يصيح ، TotalDays هو مزدوج ، الأيام هي كثافة العمليات.


هل تريد حساب العمر بالسنوات للموظف؟ ثم يمكنك استخدام هذا المقتطف (من حساب العمر في C # ):

DateTime now = DateTime.Today;
int age = now.Year - bday.Year;
if (bday > now.AddYears(-age)) age--;

إذا لم يكن كذلك ، يرجى تحديد ذلك. أواجه صعوبة في فهم ما تريد.


    private static Int32 CalculateAge(DateTime DOB)
    {
        DateTime temp = DOB;
        Int32 age = 0;
        while ((temp = temp.AddYears(1)) < DateTime.Now)
            age++;
        return age;
    }




timespan