I posted the following question yesterday: http://serverfault.com/questions/217098/list-all-documents-webparts-and-sites-using-a-certain-solution-in-sharepoint-20 When you look at the site though, it shows "Asked 23 hours ago" in the signature area where my user card is. On the right side however it says "asked today."
I am guessing it says "today" if the difference between DateTime.Now and the original post date is less than 24 hours, but this is incorrect. This is likely a problem on all of stack exchange. I don't believe this is accurate behavior for noda-time, so I am guessing stack exchange doesn't use it; might be a nice addition though.
Here is a screenshot showing what actually was displayed in case this isn't seen until the time rolls over: 
Expected Behavior: I would kind of expect the behavior to be something like the following. This is hardly a complete example though since it doesn't deal with things like smaller or larger time spans (weeks, months, years, minutes, seconds) that would need different output. It also isn't perfect because there are situations here that are going to still be ambiguous or wrong. This is why I would think noda-time would be the way to go here:
if (diff_hours < 12)
dashH = string.Format("{0} hours ago", diff_hours);
else if (diff_hours >= 12 && diff_hours < 24 && op_day != now_day)
dashH = "Yesterday";
else if (diff_hours >= 12 && diff_hours < 24 && op_day == now_day)
dashH = "Today";
else if (diff_hours >= 24 && diff_hours < 48)
dashH = "Yesterday";
else if (diff_hours >= 48)
dashH = String.Format("{0} days ago", (int)diff_hours / 2);
Right now it seems like the behavior is more like the following, and while it is still an approximate, it allows for confusion with "yesterday" and "today" being possible on days that aren't actually "yesterday" or "today":
if (diff_hours < 24)
dashH = "Today";
else if (diff_hours >= 24 && diff_hours < 48)
dashH = "Yesterday";
else if (diff_hours >= 48)
dashH = String.Format("{0} days ago", (int)diff_hours / 2);