It's not a bug...
...it's a feature!
Seven thousand leap year day babies have revolted against the Toys R Us giraffe, skewering Steve Ballmer along the way. Peeved that Geoffrey the Giraffe never sends birthday cards to kiddies born on February 29, the international Honor Society of Leap Year Day Babies recently unsheathed free software capable of destroying the …
"How do you explain to a five-year-old, that they won't receive a birthday card from Geoffrey over at Toys R Us this year, because the Toys R Us computer has no way to recognize their birthday?" asks Society spokeswoman Raenell Dawn.
Well, surely anyone who was born on Feb 29th will not have a birthday until they are four, and then again when they are eight. So why would they expect a card when they are five?
Or alternatively, anyone born on Feb 29th who had had 5 birthdays, would be 20 years old. Now why would a 20 year old expect a card from Geoffrey the giraffe?
If you're born on 29th Feb, does that mean you only age 1 year every 4 years?
What do the do about celebrating their birthday every other 3 years?
I can't believe that these site's can't fix the leap year bugs. I mean I'm really not very good at writing shell scripts on Linux but I still managed to bodge up some code to detect leap years.
Rob
I think Ballmer is as mad as everyone else, however, the Lotus bug is pretty well documented and to say "well he says so, so it must be true". Waste of space, the original article was interesting enough, but he's obviously thrown in that MS complaint to get publicity, and you've fallen straight into it.
..between how many 'years old' you are and how many birthdays you have had.
A person born on Feb 29th may have had five 'genuine' birthdays but as they have been alive for 20 years they are 20 years old, not 5 years old.
And no Bill, it's not a feature or a standard; it's a bug. Bastard.
Sorry but I'm grumpy this morning.
Surely no-one with more than three brain cells actually answers online questions with the truth? More likely they're actually some kind of front organisation devoted to increasing the birthday-lie-space for us all. Brave heroes of the net - I salute you!
Alien because they're out to get us....
...Geoffrey wont be sending you a birthday card like the other boys"
"But why mummy? Why does Geoffrey hate me?"
Ah, picking on the kids in school who never got a card from Geoffrey, either because their parents didn't sign them up or they were born on 29th Feb., although of course those kids are now murderers.
Funny how childhood trauma does that.
Just put your damn birthday as Feb 28th or March 1st. If you're that stubborn that you absolutely must put the date as Feb 29th, I assume that you refuse all presents, birthday drinks etc. offered in any year that isn't a leap year, because "the 29th February is my birthday and it doesn't happen this year, whhhuhhhh."
I mean, ringing up YouTube to complain you can't put your birthday as February 29th, for god's sake? I might be wary about shifting my birthdate if I was opening a bank account or getting a driver's licence or something else financial/legal, but with YouTube it's just a sodding age check, the month and day fields are totally irrelevant. With those forms I leave the month and day as January 1st anyway because a) privacy and b) four fewer mouse clicks.
I'm sure leap year births get enough tiresome jokes along the lines of "so you're actually only (age / 4), no booze for you then" throughout their lifetime that they really don't need people like this making it easier.
(It may be easy to talk - although if I'd been born a leap year, I would myself have been born on the 29th - but I'm fairly sure that if I had been born on the 29th, I wouldn't join a special society. As there are likely to be *quick fag-packet calculation* over 40,000 people in the UK born on 29th of February this lot can't exactly call themselves representative.)
I've had mine rejected a couple of times, and I was born on 29th Feb, or even in a leap year.
And yes, I did take into account that some countries (all one of it) get the day and month the wrong way around.
I can only assume that the webdesigner for those sites was convinced no-one over forty would want to sign up for the service. Well, in a way (s)he was right.
(as for "actually answers online questions with the truth?" - well it helps when sorting out which services I actually signed up for, and who's been selling my data, despite it being illegal in Europe.)
> The world's most popular spreadsheet still fails to realize that 1900 is not a leap year. "That bug has been around for 20 years," Brouwer says. "Microsoft has always claimed that it's there to provide backwards compatibility with Lotus 1-2-3. But I've spoken to Mitch Kapor, who built Lotus 1-2-3, and he said 'Oh no, we never had a bug like that.'"
So it's Mitch Kapor word
verses
1. Microsoft (http://support.microsoft.com/kb/214326)
2. A "well documented bug" (Shakje quote)
3. Joel Spolsky (http://www.joelonsoftware.com/items/2006/06/16.html)
Enough already! Stop right there!
Firstly, WTF has this story to do with the mad spastic-dancing foul-mouthed sweat-monster who loves his company? Putting his name in the headline merely draws specious attention to a non-story about whingeing twenty-ninthers, people who really need to get a grip! Who cares about their bloody birthday?
Secondly, like Spleen above I also: "...leave the month and day as January 1st anyway because a) privacy and b) four fewer mouse clicks."
Why would I want YouTube, eBay, Google and every packet-sniffer in between to know my true date of birth (DoB)? Allied with other personally-identifying info, DoB is a useful tool in any scamsters' armoury.
As spleen suggests, just stick another birthdate in.
In the particular case of birthday cards, I don't tend to write "Happy birthday on dd:mm!", just "Happy birthday!". Similarly, I tend to post cards a few days early, relying on the recipient to be smart enough to know when to open it.
If the bulk-mailed birthday cards *do* have a date printed on, maybe people would be better just asking the retailer to not put a date on - that doesn't involve any futile complaining about Microsoft.
In any case, it's worth Feb 29th children learning they're a chronological anomaly, just as it's worth every kid learning at an early age that being in a database doesn't mean a company really knows them or care about them - it's just marketing.
is it not about the validation of the date? or is it about the fact that calendar goes 28th Feb -> 1st March without processing all the records between those dates? Hence those people who registered their b day on the 29th feb never get their record in a batch job?
I'm confused what you said the problem is. If they can't get on the list then surely they already know they aren't getting a card.
// Century correction: if year divisible by 100 but not 400 then common year.
// (Needed for calculating age of my great grandmother in days, or for messing about with daily interest rates of hundred-year Government bonds)
// Herschel's correction - if year is divisible by 4000 then common year - not required due to general insertion of leap seconds.
if(remainder($year/4)==0 && ! (remainder (year/100) == 0 && remainder (year/400) != 0 ))
{
dayOfMonthDropdown.items.add('29');
}
// or even
$febDays = ($year/4==0 ? ($year/100==0 ? (year/400==0 ? 29 : 28) : 29) : 28);
<quote>In any case, it's worth Feb 29th children learning they're a chronological anomaly, just as it's worth every kid learning at an early age that being in a database doesn't mean a company really knows them or care about them - it's just marketing.</quote>
I couldn't agree more, it is also a useful "interesting" way to get them into mathematics and/or computer science -- which has to be a good thing.
As a pro codemonkey, this kind of thing makes me totally ashamed of my profession. Any date handling code should include leap years and the 29th of Feb in it's testing. It's the canonical edge case, FFS,
And Andy and JP, it's because of jerkoffs like you that this kind of thing still apparently happens regularly. Andy, because if it takes you a dozen lines of code, you shouldn't be anywhere near a computer programming role, and JP because yes, it is quite simple, and yet you have manifestly failed to grasp the essentials (as the bishop said to the actress) despite the clues w/r/t to 1900 in the article, and then ejaculated a piece of code that exhibits EXACTLY the problem under discussion, all the while staring smugly at your output and thinking "Well, that's another problem sorted, fookin genius me". Fail
I'm sorry, but you are incompetent, and you give the rest of us a bad name. Either quit now, or have the decency to admit that you are neophytes at best and go and learn your trade properly.
Sorry if this sounds a little harsh, but I've spent far to much of my career wiping drool out of people's codebases.
Erm, the 1904 date system only works for dates starting at 1904.
So actually less useful than the flawed 1900 date system, which at least only requires a modifier to the result of an equation
=WEEKDAY("2/16/1900",1)+1
(If you were using the 1904 date system, the above formula would return #VALUE! error.
...to deploy giant robots that will speed up the earth's orbiting of the sun until it completes its trip in 360 days even. Then all our months will be exactly 30 days, and we will no longer have to suffer this, possibly the oldest of all still-living stupid programming errors (our birthdates and all other historical dates will be reset to the start date of the new calendar, in order to avoid any backward compatibility issues).
Up to thier usual tricks, all the systems have the correct date 29/02/08 however the i2004 sets have a "feature!" where they refuse to see the date so it's currently 1st March
My nortel support says it will "sort itself out" tomorrow.
Meantime everytone thinks im a moron.
joy
coat cos im not paid for today so im off down thepub.
"How do you explain to a five-year-old, that they won't receive a birthday card from Geoffrey over at Toys R Us this year, because the Toys R Us computer has no way to recognize their birthday?" asks Society spokeswoman Raenell Dawn
Picky point!: Any five year old who is having their 5th birthday on 29th Feb 2008 is a liar.
Now as they didn't get a 3rd birthday card then not getting a 4th birthday card is not going to cause too much distress. What you don't know won't hurt you. Does a 3/4 year old really worry about the fact that a stupid cartoon Giraffe is not going to send out a card and it will now ruin his/her birthday - I think not.
This is just a ego trip by the adults to pick on a high profile "Won't someone think of the children" issue for the sympathy vote when they should be campaigning against the ability to apply this to the real world such as putting birth dates into sites that serve a real purpose such as Shopping or Holiday booking.
Sorry but you have lost my sympathy on this one by not getting to the real point of the issue.
Quite simple we just change the seconds unit.
I know a lot of you will want to change to the minute or the hour, but imagine the confusion that will cause!
We are currently 5 hrs, 48 mins, and 46 seconds a drift.
Thats a whopping 20, 926 seconds out.
365 * (24 * 60 * 60) = 31, 536, 000 seconds is what we want as a year.
So, a second is now 1.0006635591070523 of the old seconds or as we now refer to them as, 'dark seconds'.
Now some may be wondering about those born today, well quite simply we all have to recalculate our birthdays, the baseline is the date of the founding of the Old Swiss Confederacy (they make cuckoo clocks so seems apt) 1291, for ease of use we will make it the first moment of that year.
This message bought to you by - Watchmakers of the World - "Watchmakers do it with precision."
You see this is why the world should be designed by software developers.
Dates wouldn't be so complicated (there'd be an easy way to work out Easter, for example); everybody would be assigned a GUID as a name when born; you'd be able to write a parser for every spoken language in 64K of compiled code.
I personally can't wait until the machines take over and get rid of all this nonsense.