I’ll warn you to start: this is a date handling CodeSOD, but that’s only a small part of the WTF. You see, there’s an old joke, “There are three hard problems in computer science: naming things and counting things.” This code has a hard time with the first:
private string ReturnCurrentGMTTime()
{
string result = string.Empty;
DateTime time = DateTime.Now;
string fs = "yyyy-MM-dd'T'HH:mm:ss";
result = time.ToString(fs);
result += "+02:00";
return result;
}
Robert sent this in, after receiving it from a contractor.
This method name is a thing of beauty, simply because it is so wrong. Everything about it is wrong. The first problem is small, but rarely do we use the word “Return” as part of a method name. GetCurrentGMTTime
would be better, but as this is C#, the convention is just to treat it like a property: CurrentGMTTime
. Of course, GMT stands for “Greenwich Mean Time”, so like “ATM Machine”, our method name remains wrong. Perhaps it should be CurrentGMT
or CurrentGMTime
.
But that’s small potatoes. Not only is the method just poorly named, it’s wildly inaccurate. DateTime.now
only returns GMT in the event that you are on a machine in that time zone- which I happen to know that Robert is not. He’s actually in Denmark- which explains the “+02:00”- during Daylight Savings Time, that is their offset from GMT.
So, the method isn’t ReturnCurrentGMTTime
, but it is CurrentTimeWithTimeZone
. And, of course, this formatting uses some of the built-in formatting functionality from .NET, but decides in the end to use string concatenation to take it the last mile. In the end, it's not wrong- just stupid.