I am converting Java to C# and need to convert code involving Calendar:
Calendar rightNow = Calendar.getInstance();
StringBuilder sb = new StringBuilder();
sb.append((rightNow.get(Calendar.MONTH) + 1));
sb.append(rightNow.get(Calendar.DAY_OF_MONTH));
sb.append(rightNow.get(Calendar.YEAR)).substring(2);
sb.append(rightNow.get(Calendar.HOUR_OF_DAY));
sb.append(rightNow.get(Calendar.MINUTE));
MORE EDIT As there are two possible approaches (System.DateTime and Calendar) which should I use? (I recall problems in the Java universe here)
SUMMARY of RESPONSES For simple uses System.DateTime is appropriate and does not have the problems of Java’s Date. There should be a single call in case the date ticks forward between calls.
The
System.DateTimestructure is what you’re looking for.Preferred Way:
As Joel Coehoorn points out, you could condense that code down to one line. I had become so engorged on the implementation, I didn’t see what you were actually trying to do — luckily Joel pointed it out.
That will roll all of those up into one call. Pretty nifty.
Direct Translation (Not recommended):
To translate your Java code into C#, you’d do something like the following:
You can copy/paste this C# code to see:
Regarding Java issues with DateTime
The
DateTimestructure doesn’t have the same issues that Java had with their date implementation; so you shouldn’t have the same problems that plagued the Java world.Other Methods
As another user pointed out, you can use the
System.Globalization.Calendarclass as well. I get along just fine with theDateTimestruct, and it’s a little lighter-weight than the Calendar class, but they both can be used. If you’re going to jump around date and calendar implemenations, then go with theCalendarclass; if you’re going to stick with one implementation of dates, then theDateTimestructis just fine.