private void PrintDateTime(StringBuilder sb, DateTime dt)
{
string format = "";
switch (_conversion)
{
case DateTimeConv.HourOfDay0: // = 'H' (00 - 23)
format = "HH";
break;
case DateTimeConv.Hour0: // = 'I' (01 - 12)
format = "hh";
break;
case DateTimeConv.HourOfDay: // = 'k' (0 - 23) -- like H
format = "%H";
break;
case DateTimeConv.Hour: // = 'l' (1 - 12) -- like I
format = "%h";
break;
case DateTimeConv.Minute: // = 'M' (00 - 59)
format = "mm";
break;
case DateTimeConv.Nanosecond: // = 'N' (000000000 - 999999999)
sb.Append(((dt - new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond)).Ticks * 100).ToString("D9"));
return;
case DateTimeConv.Millisecond: // = 'L' jdk, not in gnu (000 - 999)
format = "fff";
break;
case DateTimeConv.MillisecondSinceEpoch: // = 'Q' (0 - 99...?)
TimeSpan ts = dt - Epoch;
sb.Append((long)ts.TotalMilliseconds);
return;
case DateTimeConv.AmOrPm: // = 'p' (am or pm)
format = "tt";
break;
case DateTimeConv.SecondsSinceEpoch: // = 's' (0 - 99...?)
ts = dt - Epoch;
sb.Append((long)ts.TotalSeconds);
return;
case DateTimeConv.Second: // = 'S' (00 - 60 - leap second)
format = "ss";
break;
case DateTimeConv.Time: // = 'T' (24 hour hh:mm:ss)
format = "HH:mm:ss";
break;
case DateTimeConv.ZoneNumeric: // = 'z' (-1200 - +1200) - ls minus
// TODO: This is not exactly the same as the Java version
format = "%K";
break;
case DateTimeConv.Zone: // = 'Z' (symbol)
// Can't do this directly from DateTime.
return;
// Date
case DateTimeConv.NameOfDayAbbrev: // = 'a' 'a'
format = "ddd";
break;
case DateTimeConv.NameOfDay: // = 'A' 'A'
format = "dddd";
break;
case DateTimeConv.NameOfMonthAbbrev: // = 'b' 'b'
case DateTimeConv.NameOfMonthAbbrevX: // = 'h' -- same b
format = "MMM";
break;
case DateTimeConv.NameOfMonth: // = 'B' 'B'
format = "MMMM";
break;
case DateTimeConv.Century: // = 'C' (00 - 99)
sb.Append((dt.Year / 100).ToString("D2"));
return;
case DateTimeConv.DayOfMonth0: // = 'd' (01 - 31)
format = "dd";
break;
case DateTimeConv.DayOfMonth: // = 'e' (1 - 31) -- like d
format = "%d";
break;
case DateTimeConv.DayOfYear: // = 'j' (001 - 366)
sb.Append(dt.DayOfYear.ToString("D3"));
return;
case DateTimeConv.Month: // = 'm' (01 - 12)
format = "MM";
break;
case DateTimeConv.Year2: // = 'y' (00 - 99)
format = "yy";
break;
case DateTimeConv.Year4: // = 'Y' (0000 - 9999)
format = "yyyy";
break;
// Composites
case DateTimeConv.Time12Hour: // = 'r' (hh:mm:ss [AP]M)
format = "hh:mm:ss tt";
break;
case DateTimeConv.Time24Hour: // = 'R' (hh:mm same as %H:%M)
format = "HH:mm";
break;
case DateTimeConv.DateTime: // 'c' (Sat Nov 04 12:02:33 EST 1999)
format = "r";
break;
case DateTimeConv.Date: // 'D' (mm/dd/yy)
format = "MM/dd/yy";
break;
case DateTimeConv.IsoStandardDate: // 'F' (%Y-%m-%d)
format = "yyyy-MM-dd";
break;
}
sb.Append(dt.ToString(format));
}