Re: Calculate an age
You might want to look at pyfdate: http://www.ferg.org/pyfdate This Python program: == from pyfdate import * birthday = Time(2000,2,29) today = Time(2003,2,28) years, months, period = today.diffym(birthday) print On, today.d print person is, years, years, months,months, period.shortest today = Time(2003,3,1) years, months, period = today.diffym(birthday) print On, today.d print person is, years, years, months,months, period.shortest == produces this output == On February 28, 2003 person is 3 years 0 months On March 1, 2003 person is 3 years 0 months 1 day == -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
En Sat, 08 Dec 2007 14:37:13 -0300, Pierre Quentel [EMAIL PROTECTED] escribió: I understand that there is no possible conversion from a number of days to a (X,Y,Z) tuple of (years,months,days), and the reverse. But the difference between 2 dates can be unambiguously expressed as (X,Y,Z), and given a start date and an interval (X,Y,Z) you can also find the end date unambiguously, provided the arguments are valid (for instance, 1 month after the 30th of January is not valid) As a side note, the legal date reckoning in Argentina considers that case too: 1 month after the 30th of January is Feb 28 (or 29 on leap years); 1 month after March 31 is April 30. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
On Fri, 07 Dec 2007 23:37:23 -0800, Pierre Quentel wrote: On Dec 7, 7:09 pm, Dennis Lee Bieber [EMAIL PROTECTED] wrote: How many days in a year? 365.25 (J2000 epoch), 365.2422 [as I recall](B1900 epoch), 365.0 (non-leap year), 366 (leap year)? Gregorian or Julian calendar -- and depending upon one's country, the Gregorian reform may take place at different years. Simple months of (year/12) days, or calendrical mishmash (30 days hath September, April, June, and November...) again with leap year exceptions? I don't see where the ambiguity is. Isn't it obvious what we mean by I am X years, Y months and Z days ? That's obvious but given either the present date or the birth date along with that information it's not so clear what the other date may be. Unless you give the info about the used calender systems and the points in time (according to which calender system!?) when to use which system. If you are just asking those questions for people living now (and are not called Connor McLeod ;-) and the gregorian calender it's easy but providing functions in the standard library for arbitrary date calculation involving years is not so easy. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
What is so obvious about dealing with months that vary in length and the leap-year issue? Nothing. If you were born on a day that does not exist every year (Feb 29th), how old are you on Feb 28th? or Mar 1 of non-leap years? If you were born on Feb 29th, then you would be one month old on March 29th, but would you be one year, one month and one day old on March 29th of the next year? or would you merely be one year and one month old? I believe this is exactly why datetime merely states deltas in days, not months or years. Marc 'BlackJack' Rintsch wrote: On Fri, 07 Dec 2007 23:37:23 -0800, Pierre Quentel wrote: On Dec 7, 7:09 pm, Dennis Lee Bieber [EMAIL PROTECTED] wrote: How many days in a year? 365.25 (J2000 epoch), 365.2422 [as I recall](B1900 epoch), 365.0 (non-leap year), 366 (leap year)? Gregorian or Julian calendar -- and depending upon one's country, the Gregorian reform may take place at different years. Simple months of (year/12) days, or calendrical mishmash (30 days hath September, April, June, and November...) again with leap year exceptions? I don't see where the ambiguity is. Isn't it obvious what we mean by I am X years, Y months and Z days ? That's obvious but given either the present date or the birth date along with that information it's not so clear what the other date may be. Unless you give the info about the used calender systems and the points in time (according to which calender system!?) when to use which system. If you are just asking those questions for people living now (and are not called Connor McLeod ;-) and the gregorian calender it's easy but providing functions in the standard library for arbitrary date calculation involving years is not so easy. Ciao, Marc 'BlackJack' Rintsch -- Shane Geiger IT Director National Council on Economic Education [EMAIL PROTECTED] | 402-438-8958 | http://www.ncee.net Leading the Campaign for Economic and Financial Literacy signature.asc Description: OpenPGP digital signature -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
On Dec 8, 10:04 am, Shane Geiger [EMAIL PROTECTED] wrote: What is so obvious about dealing with months that vary in length and the leap-year issue? Nothing. If you were born on a day that does not exist every year (Feb 29th), how old are you on Feb 28th? X years, 11 months, 28 days or Mar 1 of non-leap years? X' years, 0 month, 1 day If you were born on Feb 29th, then you would be one month old on March 29th, but would you be one year, one month and one day old on March 29th of the next year? or would you merely be one year and one month old? 1 year, 1 month, 0 day ; why would there be one day more ? People born on the 28th would be one year, one month and one day old. If two dates have the same day-in-the-month then the difference is X years, Y months and 0 day I understand that there is no possible conversion from a number of days to a (X,Y,Z) tuple of (years,months,days), and the reverse. But the difference between 2 dates can be unambiguously expressed as (X,Y,Z), and given a start date and an interval (X,Y,Z) you can also find the end date unambiguously, provided the arguments are valid (for instance, 1 month after the 30th of January is not valid) Regards, Pierre -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
On Dec 7, 7:09 pm, Dennis Lee Bieber [EMAIL PROTECTED] wrote: How many days in a year? 365.25 (J2000 epoch), 365.2422 [as I recall](B1900 epoch), 365.0 (non-leap year), 366 (leap year)? Gregorian or Julian calendar -- and depending upon one's country, the Gregorian reform may take place at different years. Simple months of (year/12) days, or calendrical mishmash (30 days hath September, April, June, and November...) again with leap year exceptions? Hi, I don't see where the ambiguity is. Isn't it obvious what we mean by I am X years, Y months and Z days ? Regards, Pierre -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
On Dec 7, 8:34 am, Pierre Quentel [EMAIL PROTECTED] wrote: Hi all, I have searched in the standard distribution if there was a function to return the difference between 2 dates expressed like an age : number of years, of months and days. The difference between datetime instances returns a timedelta object that gives a number of days, but not an age So is there such a function somewhere ? If not, for what reason, since it's a rather usual task and a rather usually imprecisely specified task [what do you mean by number of months?] with multiple interpretations/implementations/ doctrines the publication of any one of which attracts a truckload of rotten tomatoes and derision from adherents of other sects :-) -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
On Dec 6, 4:19 pm, John Machin [EMAIL PROTECTED] wrote: On Dec 7, 8:34 am, Pierre Quentel [EMAIL PROTECTED] wrote: Hi all, I have searched in the standard distribution if there was a function to return the difference between 2 dates expressed like an age : number of years, of months and days. The difference between datetime instances returns a timedelta object that gives a number of days, but not an age So is there such a function somewhere ? If not, for what reason, since it's a rather usual task and a rather usually imprecisely specified task [what do you mean by number of months?] with multiple interpretations/implementations/ doctrines the publication of any one of which attracts a truckload of rotten tomatoes and derision from adherents of other sects :-) I think metric months are all the same length, 10**1.4834089785587095 days. -- Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Calculate an age
On Dec 6, 11:19 pm, John Machin [EMAIL PROTECTED] wrote: On Dec 7, 8:34 am, Pierre Quentel [EMAIL PROTECTED] wrote: Hi all, I have searched in the standard distribution if there was a function to return the difference between 2 dates expressed like an age : number of years, of months and days. The difference between datetime instances returns a timedelta object that gives a number of days, but not an age So is there such a function somewhere ? If not, for what reason, since it's a rather usual task and a rather usually imprecisely specified task [what do you mean by number of months?] with multiple interpretations/implementations/ doctrines the publication of any one of which attracts a truckload of rotten tomatoes and derision from adherents of other sects :-) It may be imprecisely specified, yet it's quite useful anyway. I've got an implementation at http://blog.tkbe.org/archive/python-how-old-are-you/ if anyone's interested.. -- bjorn -- http://mail.python.org/mailman/listinfo/python-list