# Format current date

I was refactoring some code and found this:

DateTime CurrentDateTime = System.now();
Datetime ESTDate = Datetime.newInstance(CurrentDateTime.year(),CurrentDateTime.month(),CurrentDateTime.day(),CurrentDateTime.hour(),CurrentDateTime.minute(),CurrentDateTime.second());
String myDateFormat = ESTDate.format('yyyy-MM-dd hh:mm:ss');
String myDate = myDateFormat.replace(' ', 'T');
object1.birthDate = myDate;


And I changed it to

object1.birthDate = datetime.now().format('yyyy-MM-dd\'T\'hh:mm:ss');


CurrentDateTime isn't used anywhere just in those four lines. How a programmer can even do that? Or WHY?

-
What's language is that? –  Cyrille Ka Feb 11 '13 at 22:30
@CyrilleKarmann - Probably C# (or other .NET); DateTime is the standard 'timestamp' type, and System.Now is the 'current timestamp' property. Personally, though, I'm a little suspicious of anything named object1, and storing the time for a birthdate (while technically people are born at a particular 'instant', nobody ever thinks of them that ways - it tends to be the 'local calendar day'). That, and outputting it as a formatted string. It looks like there may have been an attempt to deal with timezones, but I don't see anything that actually references them, so... –  Clockwork-Muse Feb 11 '13 at 23:32
@Clockwork-Muse no, this is not C#. apex-code is a programming language for Salesforce. –  codesparkle Feb 13 '13 at 9:38
@Clockwork-Muse imagine that instead birthDate there is a field named f1 -> object1.f1 = ... –  Chiz Feb 18 '13 at 11:22
@Chiz - Ouch. Is there nothing you can do to get better names for things? I'd be "Spindle, Fold, and Mutilate"-ing someone who tried that on regular production code... –  Clockwork-Muse Feb 18 '13 at 16:25

The programmer probably didn't understand how quoting works in DateTime.format() - just couldn't get the 'T' to appear in the string, so bailed, put the space there and replaced it. Creating ESTDate from CurrentDateTime is particularly weird, though!