मैं सी # में किसी की उम्र की गणना कैसे करूं?

किसी व्यक्ति के जन्मदिन का प्रतिनिधित्व करने वाले डेटटाइम को देखते हुए, मैं वर्षों में उनकी उम्र की गणना कैसे करूं?

0
जोड़ा संपादित
विचारों: 17
@Yaur: बस जीएमटी / यूटीसी में अब + जन्म का समय परिवर्तित करें, उम्र केवल एक सापेक्ष मूल्य है, इसलिए टाइमज़ोन अप्रासंगिक हैं। उपयोगकर्ता के वर्तमान टाइमज़ोन को निर्धारित करने के लिए, आप भू-आवंटन का उपयोग कर सकते हैं।
जोड़ा लेखक Stefan Steiger, स्रोत
[जूलियन तिथि] पर विचार क्यों नहीं करें [1]? [1]: stackoverflow.com/questions/7103064/…
जोड़ा लेखक Muhammad Hewedy, स्रोत
अब तक के सभी उत्तरों क्या चूक गए हैं यह है कि यह निर्भर करता है कि व्यक्ति कहां पैदा हुआ था और वे अभी कहां हैं।
जोड़ा लेखक Yaur, स्रोत
ध्यान दें कि एक वर्ष से कम उम्र के किसी व्यक्ति के लिए, उनकी आयु दिन, सप्ताह या महीनों में दी जाती है। इकाइयों के लिए संक्रमण समय डोमेन-विशिष्ट हो सकता है।
जोड़ा लेखक Andrew Morton, स्रोत
टाइमस्पेन का उपयोग क्यों नहीं कर रहा है?
जोड़ा लेखक Arijit Mukherjee, स्रोत
यदि हम क्रॉस-टाइमज़ोन गणनाओं के @Yaur के सुझाव पर विचार कर रहे हैं, तो डे लाइट सेविंग टाइम किसी भी तरीके से गणना को प्रभावित करेगा?
जोड़ा लेखक DDM, स्रोत
किसी ने लीप साल नहीं माना है? या महीने की जांच?
जोड़ा लेखक Crash Override, स्रोत

7 उत्तर

कई साल पहले, मेरी वेबसाइट पर एक आयु कैलक्यूलेटर gimmick प्रदान करने के लिए, मैंने उम्र की गणना करने के लिए एक फ़ंक्शन लिखा था अंश। यह उस फ़ंक्शन का त्वरित पोर्ट है C# ( से PHP संस्करण )। मुझे डर है कि मैं सी # संस्करण का परीक्षण करने में सक्षम नहीं हूं, लेकिन आशा है कि आप सभी का आनंद लेंगे!

(माना जाता है कि यह स्टैक ओवरफ़्लो पर उपयोगकर्ता प्रोफाइल दिखाने के प्रयोजनों के लिए थोड़ा सा गड़बड़ है, लेकिन शायद पाठकों को इसके लिए कुछ उपयोग मिलेगा। :-))

double AgeDiff(DateTime date1, DateTime date2) {
    double years = date2.Year - date1.Year;

    /*
     * If date2 and date1 + round(date2 - date1) are on different sides
     * of 29 February, then our partial year is considered to have 366
     * days total, otherwise it's 365. Note that 59 is the day number
     * of 29 Feb.
     */
    double fraction = 365
            + (DateTime.IsLeapYear(date2.Year) && date2.DayOfYear >= 59
            && (date1.DayOfYear < 59 || date1.DayOfYear > date2.DayOfYear)
            ? 1 : 0);

    /*
     * The only really nontrivial case is if date1 is in a leap year,
     * and date2 is not. So let's handle the others first.
     */
    if (DateTime.IsLeapYear(date2.Year) == DateTime.IsLeapYear(date1.Year))
        return years + (date2.DayOfYear - date1.DayOfYear) / fraction;

    /*
     * If date2 is in a leap year, but date1 is not and is March or
     * beyond, shift up by a day.
     */
    if (DateTime.IsLeapYear(date2.Year)) {
        return years + (date2.DayOfYear - date1.DayOfYear
                - (date1.DayOfYear >= 59 ? 1 : 0)) / fraction;
    }

    /*
     * If date1 is not on 29 February, shift down date1 by a day if
     * March or later. Proceed normally.
     */
    if (date1.DayOfYear != 59) {
        return years + (date2.DayOfYear - date1.DayOfYear
                + (date1.DayOfYear > 59 ? 1 : 0)) / fraction;
    }

    /*
     * Okay, here date1 is on 29 February, and date2 is not on a leap
     * year. What to do now? On 28 Feb in date2's year, the ``age''
     * should be just shy of a whole number, and on 1 Mar should be
     * just over. Perhaps the easiest way is to a point halfway
     * between those two: 58.5.
     */
    return years + (date2.DayOfYear - 58.5) / fraction;
}
0
जोड़ा
यह अच्छा है। हालांकि मैं बस खगोलीय वर्षों का इस्तेमाल किया।
जोड़ा लेखक IllidanS4, स्रोत

छलांग के वर्षों और सबकुछ के कारण मुझे सबसे अच्छा तरीका पता है:

DateTime birthDate = new DateTime(2000,3,1);
int age = (int)Math.Floor((DateTime.Now - birthDate).TotalDays / 365.25D);

उम्मीद है की यह मदद करेगा।

0
जोड़ा

एक और समारोह, मेरे द्वारा नहीं बल्कि वेब पर पाया गया और इसे थोड़ा सा परिष्कृत किया:

public static int GetAge(DateTime birthDate)
{
    DateTime n = DateTime.Now; // To avoid a race condition around midnight
    int age = n.Year - birthDate.Year;

    if (n.Month < birthDate.Month || (n.Month == birthDate.Month && n.Day < birthDate.Day))
        age--;

    return age;
}

सिर्फ दो चीजें जो मेरे दिमाग में आती हैं: उन देशों के लोगों के बारे में क्या जो ग्रेगोरियन कैलेंडर का उपयोग नहीं करते हैं? डेटटाइम.अब मुझे लगता है कि सर्वर-विशिष्ट संस्कृति में है। मेरे पास एशियाई कैलेंडर के साथ वास्तव में काम करने के बारे में बिल्कुल 0 ज्ञान है और मुझे नहीं पता कि कैलेंडरों के बीच तिथियों को बदलने का कोई आसान तरीका है, लेकिन अगर आप 4660 :-) से उन चीनी लोगों के बारे में सोच रहे हैं

0
जोड़ा
यह विभिन्न क्षेत्रों (दिनांक प्रारूप) को सर्वोत्तम रूप से संभालने के लिए प्रतीत होता है।
जोड़ा लेखक webdad3, स्रोत

मुझे नहीं लगता कि अब तक कोई भी उत्तर उन संस्कृतियों को प्रदान करता है जो उम्र की गणना अलग-अलग करते हैं। उदाहरण के लिए, पश्चिम में बनाम पूर्वी एशियाई आयु गणना देखें।

किसी भी असली उत्तर में स्थानीयकरण शामिल होना चाहिए। रणनीति पैटर्न शायद इस उदाहरण में क्रमशः होगा।

0
जोड़ा
@some - Koreans अभी भी मुख्य रूप से इस प्रणाली का उपयोग करें।
जोड़ा लेखक Justin L., स्रोत
असल में यह अवधारणा बहुत महत्वपूर्ण हो सकती है - लोगों को अपनी निजी जानकारी गलत तरीके से नहीं बताया जा रहा है। उदाहरण के तौर पर, मेरे परिवार का आधा मलेशिया में रहता है और ब्रिटेन में आधा रहता है। अभी मेरी उम्र दो साल से अधिक मानी जाती है जब मैं अपने परिवार के एक तरफ से दूसरे के साथ हूं।
जोड़ा लेखक Phil Gan, स्रोत
आपके द्वारा प्रदान किए गए विकिपीडिया लेख से: "चीन और जापान में इसका उपयोग पारंपरिक भाग्य-कहने या धर्म के लिए किया जाता है, और यह शहर के लोगों के बीच दैनिक जीवन में गायब हो रहा है।"
जोड़ा लेखक some, स्रोत
न केवल हमें यह प्रणाली कोरिया में मुख्य रूप से उपयोग की जाती है, बल्कि स्थानीय लोगों के साथ उम्र के बारे में चर्चा करने वाले पर्यटक के रूप में, स्थानीय लोग अपने जन्म वर्ष से विनम्रतापूर्वक एक दूसरे को संदर्भित करेंगे। मैं 25 वर्ष का नहीं हूं, मैं 87 वर्ष का हूं। मुझे यह दृष्टिकोण बेहतर लगता है। एक 'अंतरराष्ट्रीय जन्मदिन का प्रारूप'
जोड़ा लेखक Dean Rather, स्रोत
कोरिया में भी, जबकि इस प्रणाली को कानूनी उद्देश्यों (जैसे, कहें, पीने की उम्र) के लिए आकस्मिक बातचीत में लोकप्रिय रूप से उपयोग किया जाता है, पश्चिमी गणना का उपयोग किया जाता है। तो मुझे लगता है कि सिर्फ एक संस्कृति स्विच फिसलने का इरादा उन चीजों को करने का एक अच्छा तरीका है जिनके लिए आप इरादा नहीं रखते हैं।
जोड़ा लेखक Casey, स्रोत

यह करने का यह एक अजीब तरीका है, लेकिन यदि आप तिथि को yyyymmdd पर प्रारूपित करते हैं और वर्तमान तिथि से जन्मतिथि घटाते हैं तो अंतिम 4 अंकों को छोड़ दें :)

मुझे सी # नहीं पता, लेकिन मेरा मानना ​​है कि यह किसी भी भाषा में काम करेगा।

20080814 - 19800703 = 280111 

अंतिम 4 अंक = <�कोड> 28 ड्रॉप करें।

सी # कोड:

int now = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
int dob = int.Parse(dateOfBirth.ToString("yyyyMMdd"));
int age = (now - dob) / 10000;

या वैकल्पिक रूप से एक विस्तार विधि के रूप में सभी प्रकार के रूपांतरण के बिना। छोड़े गए त्रुटि की जांच:

public static Int32 GetAge(this DateTime dateOfBirth)
{
    var today = DateTime.Today;

    var a = (today.Year * 100 + today.Month) * 100 + today.Day;
    var b = (dateOfBirth.Year * 100 + dateOfBirth.Month) * 100 + dateOfBirth.Day;

    return (a - b) / 10000;
}
0
जोड़ा
एक पैरामीटर जोड़ने के लिए बेहतर होगा: float.Parse (x, CultureInfo.InvariantCulture) क्योंकि कुछ स्थानीय लोग आंशिक संख्या में एक डेलीमीटर के लिए डॉट के बजाय अल्पविराम का उपयोग करते हैं
जोड़ा लेखक krvladislav, स्रोत
बहुत पुरानी पोस्ट के लिए प्रश्न पूछना int age = (अब - डॉब) / 10000; आप 10000 तक क्यों घटाते हैं?
जोड़ा लेखक Monojit Sarkar, स्रोत
डेटटाइम। मैक्सवेल्यू वर्ष 99 99 है, मिनवैल्यू वर्ष 1 है, ओवरफ्लो संभव नहीं है।
जोड़ा लेखक Antonín Lejsek, स्रोत
दरअसल यह एमएस-एसक्यूएल पर डेटाटाइम-फ़ील्ड (01-011900 के बाद से कुल दिन) के उपयोग के लिए बहुत अच्छा है।
जोड़ा लेखक Patrik Eckebrecht, स्रोत
@numerek कृपया अपने सुझाए गए संशोधनों को अपने उत्तर के रूप में पोस्ट करें। इसके लायक होने के लिए, वर्तमान वर्ष के समय 10000 परिमाण के दो आदेशों से, पूर्णांक ओवरफ़्लो के पास कहीं भी नहीं है। 20,150,000 बनाम 2,147,483,648
जोड़ा लेखक GalacticCowboy, स्रोत
yyyymmdd के लिए होरे। मैं इस प्रारूप में पी ersonal सी omputer (circa 1981) संग्रहीत तारीखों पर उपयोग किया गया पहला डेटाबेस उत्पाद। किसी भी तरह की तारीख में हेरफेर इतना आसान था।
जोड़ा लेखक radarbob, स्रोत
अपने वैकल्पिक उत्तर में, आप वर्षों को घटाकर पूर्णांक ओवरफ़्लो से बच सकते हैं, फिर महीने * 30.5 + दिन घटाएं और 366 तक विभाजित करें
जोड़ा लेखक numerek, स्रोत
यह जवाब मानता है कि लीप डे शिशुओं के पास 1 मार्च को गैर-लीप वर्षों पर उनके जन्मदिन होते हैं।
जोड़ा लेखक Jamie Kitson, स्रोत

समझने में आसान और सरल समाधान।

// Save today's date.
var today = DateTime.Today;
// Calculate the age.
var age = today.Year - birthdate.Year;
// Go back to the year the person was born in case of a leap year
if (birthdate > today.AddYears(-age)) age--;

हालांकि, यह मानता है कि आप उम्र के पश्चिमी विचार की तलाश में हैं और पूर्वी एशियाई गणना

0
जोड़ा
@ जेएजी: डेटटाइम। आज भी तेज होना चाहिए।
जोड़ा लेखक Shimmy, स्रोत
यह कोड निकटतम युग की गणना नहीं कर रहा है। यहां, कोड है: var ts = dateTime.अब - नया डेटटाइम (1 9 88, 3, 1 9); var age = Math.Round (ts.Days / 365.0);
जोड़ा लेखक Dhaval Panchal, स्रोत
मैं अब और मेरी टिप्पणी संपादित नहीं कर सकता, इसलिए मेरा सुधार यहां है: TimeSpan अंतर = विषय। जन्मदिन - दिनांक समय.अब; int आयु = अंतर। दिन; यदि आप वर्षों में उम्र चाहते हैं, तो आप हमेशा int ageInYears = आयु / 365; जोड़ सकते हैं
जोड़ा लेखक Nolonar, स्रोत
DateTime dateDifference = subject.birthday - DateTime.अब करना आसान नहीं होगा! int आयु = dateDifference.Year; ? इसके अलावा, मुझे नहीं लगता कि उम्र लीप वर्षों पर निर्भर करती है। आखिरकार, एक वर्ष 365 <366 दिनों के रूप में परिभाषित किया जाता है, लीप साल आपको किसी भी दिन छोटे नहीं बनाते हैं।
जोड़ा लेखक Nolonar, स्रोत
या बस अगर (जन्मदिन। DayOfYear> आज। DayOfYear); दिनांक चर को संशोधित करने की आवश्यकता नहीं है
जोड़ा लेखक NKCSS, स्रोत
@ डेनविल, क्या यह वास्तव में गलत है? एक सरल उदाहरण लें। जन्मदिन = 2000/02/29, आज = ​​2001/02/28। दिन बीत गए: 365. क्या वह एक वर्ष नहीं है, और इसलिए 28 वें वर्ष में व्यक्ति एक वर्ष का व्यक्ति नहीं है? या एक वर्ष 365-1 / 4 दिनों की परिभाषा है? मैं बस इतना कह रहा हूं, यह जटिल है।
जोड़ा लेखक devuxer, स्रोत
आखिरी पंक्ति ने मुझे बहुत ज्यादा सोचा। इसके बजाए कैसे: अगर (bday.AddYears (उम्र)> अब) उम्र -; यह एक और सहज ज्ञान युक्त अभिव्यक्ति प्रतीत होता है।
जोड़ा लेखक cdiggins, स्रोत
वर्षों में उम्र को मापने की अवधारणा सिर्फ एक गंदी झूठ है क्योंकि यह लीप वर्षों में नहीं लेती है। हमें दिनों में उम्र मापना चाहिए।
जोड़ा लेखक Melbourne Developer, स्रोत
@Legends यह उत्तर में इंगित किए गए अनुमानों की तुलना में अधिक धारणाएं कर रहा है, और यह आपके मामले के लिए सही है अगर केवल तभी होता है जब उन धारणाएं आपके मामले के लिए हों। अपने मामले को जानने के बिना, अपने आप को किसी अन्य के लिए हाँ या कोई उत्तर में बदलने के लिए असंभव है।
जोड़ा लेखक hvd, स्रोत
@ ल्यूकटॉ'ब्रायन अगर (bday> आज। AddYears (-age)) आयु -; इस जवाब में हिस्सा उस पर ध्यान देना चाहिए। वर्ष कोड में अंतर के आधार पर आयु उस बिंदु पर 10 होगा। यदि जन्मदिन (दिसंबर 1 99 0) 10 साल पहले (जो मार्च 1 99 0 होगा) के बाद है, तो यह है, तो आयु को 9 में घटा दिया जाता है। क्या आप कह रहे हैं कि आपके लिए काम नहीं करता है?
जोड़ा लेखक hvd, स्रोत
क्या यह समाधान 1400 से अधिक उपरोक्तों के साथ सही है, क्योंकि मैं टिप्पणी अनुभाग से पढ़ सकता हूं कि इस समाधान के साथ कुछ समस्याएं हैं ...?
जोड़ा लेखक Legends, स्रोत
यह उत्तर महीने में नहीं लेता है - अगर मेरा जन्म दिसंबर 1 99 0 में हुआ था और आज मार्च 2000 है तो मेरी उम्र 9 है और 10 नहीं है क्योंकि मेरे पास अभी तक मेरा जन्मदिन नहीं है
जोड़ा लेखक Luke T O'Brien, स्रोत
तो अलग-अलग देशों और कैलेंडर के अनुसार हमारी अलग उम्र है? क्या एक स्कूप ...
जोड़ा लेखक e-satis, स्रोत
@ लार्सडी "वर्तमान देशों के जन्म के बाद कई देशों ने तारीखों को छोड़ दिया है" <- आपका क्या मतलब है?
जोड़ा लेखक cja, स्रोत
@ रोब मुझे लगता है कि आप सही हैं, लेकिन यह सटीकता का सवाल है, आमतौर पर आपका जन्मदिन किसी विशेष दिन 00:00 - 23:59:59 से किसी विशिष्ट समय पर गिना जाता है।
जोड़ा लेखक Tristan Warner-Smith, स्रोत
यह देखते हुए कि हम जन्मदिन की बात कर रहे हैं, आप बस डेटटाइम का उपयोग कर सकते हैं। आज दिया गया समय भाग में कोई प्रासंगिकता नहीं है।
जोड़ा लेखक Tristan Warner-Smith, स्रोत
त्वरित मज़ा तथ्य: इस उत्तर में इस pluralsight पाठ्यक्रम में दिखाया गया है , मॉड्यूल 5 - अध्याय 3।
जोड़ा लेखक displayName, स्रोत
क्या यह समाधान महीनों के बारे में भी देख रहा है? अन्यथा यह +/- 1 वर्ष हो गया
जोड़ा लेखक alpham8, स्रोत
@cja - इसका मतलब है कि कुछ देशों ने कैलेंडरों को सिंक करने और विसंगतियों को दूर करने के लिए कई साल पहले कुछ मज़ेदार काम किए थे! en.wikipedia.org/wiki/Gregorian_calendar इसके बारे में और बात कर सकता है, मैंने पूरी तरह से नहीं किया है पढ़ें। 'वर्तमान लोगों' का संदर्भ यह बताने के लिए है कि समायोजन 20 वीं शताब्दी (1 901-2000) में हुआ था। उस अवधि से बहुत से लोग अभी भी जीवित हैं! :)
जोड़ा लेखक bPratik, स्रोत
TimeSpan का उपयोग क्यों न करें?
जोड़ा लेखक gldraphael, स्रोत
@ एनकेसीएसएस: यह लीप वर्ष को सही तरीके से संभाल नहीं करता है। मेरा परीक्षण दिखाता है कि केवल अगर (bday> now.AddYears (-age)) काम करता है। चूंकि <�कोड> DayOfYear 2012 में 61 और मार्च 1 में 2011 में 60 लौटाता है।
जोड़ा लेखक Guvante, स्रोत
यह उत्तर सभी लोकेशंस और सभी उम्र के साथ काम नहीं करता है। रूस (1 9 18), ग्रीस (1 9 24) और तुर्की (1 9 26) समेत मौजूदा जीवित लोगों के जन्म के बाद कई देशों ने तारीखों को छोड़ दिया है।
जोड़ा लेखक Lars D, स्रोत
@LarsD तो आप क्या कह रहे हैं कि लोगों की उम्र की गणना करने का कोई तरीका नहीं है? बकवास। वे अपने कैलेंडर के साथ गड़बड़ कर रहे हैं, वे अनुकूलित कर सकते हैं। भले ही आप लोकेल के आधार पर क्रॉस कैलेंडर की गणना करने के लिए लाइब्रेरी कर सकें, ए) आप इस जानकारी को कहां स्रोत करते हैं b) क्या यह वास्तव में इसके लायक है?
जोड़ा लेखक Gusdor, स्रोत
@ ट्रिस्टनवार्नर-स्मिथ वेल, तकनीकी रूप से यह करता है। यदि आप 1 जनवरी 1 99 0 को 1 बजे पैदा हुए हैं, तो आप 1 जनवरी 12:59 1 99 1 को 0 हैं, लेकिन 1 जनवरी 1:01 अपराह्न 1 99 1 में।
जोड़ा लेखक Rob, स्रोत
डेटटाइम जन्मदिन = नया दिनांक समय (2012, 11, 5); डेटटाइम अब = डेटटाइम.अब; int वर्षों = अब.हाँ - जन्मदिन.प्रिय; अगर (अब। मॉन्थ <�जन्मदिन। मॉन्थ || (अब। मॉन्थ == जन्मदिन। मॉन्थ और अब। डे <�जन्मदिन। दिन)) साल -; Console.WriteLine (years.ToString ()); Console.ReadLine ();
जोड़ा लेखक Shaik Raffi, स्रोत
इंग्लैंड और वेल्स या हांगकांग में, 2 9 फरवरी को पैदा हुए व्यक्ति कानूनी रूप से 18 मार्च को 18 साल तक पहुंचे होंगे। अगर वह ताइवान में पैदा हुआ था तो वह कानूनी रूप से 28 फरवरी को 18 वर्ष का हो जाता है, एक दिन पहले । ( विकिपीडिया ) तो जन्मदिन। AddYears (आयु) > आज और जन्मदिन> आज। अधिकार क्षेत्र (-age) अधिकार क्षेत्र के आधार पर सही और गलत दोनों हैं।
जोड़ा लेखक Daniel Liuzzi, स्रोत
बस डेटटाइम.अब प्रदर्शन पर टिप्पणी करना चाहता था। यदि आपको सटीक समय क्षेत्र मान की आवश्यकता नहीं है, तो डेटटाइम का उपयोग करें। UtcNow यह बहुत तेज़ है।
जोड़ा लेखक JAG, स्रोत
<�कोड> int आयु = दिनांक समय। आज.हाँ - बडे.हाँ; आयु = बडे> डेटटाइम। आज। AddYears (-age))? आयु - आयु;
जोड़ा लेखक Travis, स्रोत
अच्छा विचार cdiggins, लेकिन यह bday के रूप में काम नहीं करता है। AddYears (उम्र) जब उम्र 2/29 साल 2/28 देता है जो वर्षों में छलांग नहीं हैं ... कोशिश करते रहो
जोड़ा लेखक Mike Polen, स्रोत
असल में, यह अभी भी पूरी तरह से सही नहीं है। यह कोड मानता है कि 'बडे' डेटटाइम का दिनांक-भाग है। यह एक एज-केस है (मुझे लगता है कि ज्यादातर लोग सिर्फ तारीखें पारित करेंगे और दिनांक-समय नहीं), लेकिन यदि आप जन्मदिन में डेट-एंड-टाइम के रूप में पास करते हैं जहां समय 00:00:00 से अधिक है तो आप ' डैनविल ने बग में भाग लिया। Bday = bday.Date को सेट करना यह ठीक करता है।
जोड़ा लेखक Øyvind, स्रोत
@Rob संयुक्त राज्य अमेरिका में, कम से कम, यह स्वीकार किया जाता है कि आपके जन्मदिन पर, कोई फर्क नहीं पड़ता कि जब आप पैदा हुए थे, तो आपको वर्षों में अगली उम्र कहा जाता है। यहां तक ​​कि अगर 1 जनवरी को 11:59 बजे पैदा हुआ था, तो जब भी गेंद गिरती है तो नए साल की पार्टी में, हर कोई स्वीकार करेगा कि आपकी उम्र बदल गई है, भले ही आप अभी भी अपने जन्म के समय से करीब 24 घंटे कम हों। :) कानूनी तौर पर, एक व्यक्ति को उनके जन्मदिन पर भी एक वर्ष पुराना कहा जाता है। चाहे यह ड्राइव करने के लिए 16 हो, या 21 पीने के लिए, या 18 वोट देने के लिए। इससे कोई फर्क नहीं पड़ता कि आप किस समय पैदा हुए थे। आपके जन्मदिन पर आप एक
जोड़ा लेखक jfren484, स्रोत
आपकी आखिरी हालत जन्मतिथि> अब। एडयर्स (-ज) कुछ ऐसा था जो मुझे आपकी पोस्ट के कारण जल्दी मिला !! बहुत बहुत धन्यवाद
जोड़ा लेखक Avdhut Vaidya, स्रोत

यह वह संस्करण है जिसका हम यहां उपयोग करते हैं। यह काम करता है, और यह काफी सरल है। यह जेफ के जैसा ही विचार है, लेकिन मुझे लगता है कि यह थोड़ा स्पष्ट है क्योंकि यह तर्क को अलग करने के लिए तर्क को अलग करता है, इसलिए इसे समझना थोड़ा आसान है।

public static int GetAge(this DateTime dateOfBirth, DateTime dateAsAt)
{
    return dateAsAt.Year - dateOfBirth.Year - (dateOfBirth.DayOfYear < dateAsAt.DayOfYear ? 0 : 1);
}

यदि आप सोचते हैं कि चीज की तरह अस्पष्ट है, तो आप इसे स्पष्ट करने के लिए टर्नरी ऑपरेटर का विस्तार कर सकते हैं।

जाहिर है यह डेटटाइम पर एक विस्तार विधि के रूप में किया जाता है, लेकिन स्पष्ट रूप से आप उस कोड की एक पंक्ति को पकड़ सकते हैं जो काम करता है और इसे कहीं भी रखता है। यहां हमारे पास एक्सटेंशन विधि का एक और अधिभार है जो पूर्णता के लिए DateTime.Now में गुजरता है।

0
जोड़ा
मुझे लगता है कि यह एक दिन से दूर हो सकता है जब बिल्कुल एक तिथि के बारे में तिथि या तारीख एक लीप वर्ष में गिरती है। 1 मार्च, 2003 को 2 फरवरी, 2004 को पैदा हुए व्यक्ति की उम्र पर विचार करें। इसे सुधारने के लिए, आपको (माह, डेऑफमोन्थ) जोड़े की शब्दावली तुलना करने की आवश्यकता है और सशर्त के लिए इसका उपयोग करें।
जोड़ा लेखक Doug McClean, स्रोत
यह आपके जन्मदिन की तरह सही उम्र भी नहीं दिखाएगा।
जोड़ा लेखक dotjoe, स्रोत