DateTime vs ^DateTime
DateTime (without caret) is the way to go and makes life easier for comparison operations etc.
DateTime is a value type so should always be used without the ^. When you use the caret then you get a boxed value that can't be serialized etc.
Using DateTime
DateTime DateTimeNow;
DateTimeNow = DateTime::Now;
//or
DateTimeNow = DateTime(0);
MyString = DateTimeNow.Year + DateTimeNow.Month + DateTimeNow.Day;
//or
MyString = String::Format("{0:D2}", DateTimeNow.Year);
//or
MyString = String::Format("{0:G}", DateTimeNow);
array ^MyDateTimes;
Using ^DateTime
DateTime ^DateTimeNow = gcnew DateTime;
DateTimeNow = DateTime::Now;
MyString = DateTimeNow->Year + DateTimeNow->Month + DateTimeNow->Day;
//or
MyString = String::Format("{0:D2}", DateTimeNow->Year);
//or
MyString = String::Format("{0:G}", DateTimeNow);
//When you want to convert to DateTime to pass a value or to use DateTime methods
Convert::ToDateTime(MyDateTime)
Comparing
if (MyDateTime1 >= MyDateTime2)
//Compare by date element only (ignore time)
if (MyDateTime1.Date >= MyDateTime2.Date)
Adjusting
MyDateTime2 = MyDateTime1 + TimeSpan(0, 0, 1)
Adding the current time and date to a string
txtHistory->Text = "(" + DateTime::Now + ")";
Adding Values From Strings
The date and time fields are all int values but they are read only. I think you can only write an entire date time object to a DateTime object, like this:
System::DateTime moment = System::DateTime(1999, 1, 13, 3, 57, 32, 11);
//Year, Month, Day, Hour, Minute, Second, Millisecond (overloaded - don't have to include all of these)
System::DateTime dateTime =
System::DateTime( 1979, // Year
7, // Month
28, // Day
22, // Hour
35, // Minute
5, // Second
15 // Millisecond
);
Convert To Universal Time Format String
Converting a DateTime to this format allows you to avoid local date time format issues when passing DateTime values between systems. Then just use Convert::ToDateTime to convert it back.
String ^sTemp = MyDateTimeValue->ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
UTC
DateTime ^TimeNow = DateTime();
TimeNow = DateTime::Now;
TimeNow = TimeNow->ToUniversalTime();
Values
DayOfWeek DayOfWeek::Thursday
Problems With Array<DateTime^> Object not being accepted
//Using this to force the DateTime to be converted from ^ to a standard DateTime:
Convert::ToDateTime(
//is the trick to use when you get the compiler refusign to accept a perfectly valid line!
Format
MyString = String::Format("{0:dd/MM/yyyy HH:mm:ss}", MyDateTime);
DateTime ^thisDate = DateTime::Now;
// Store the output of the String::Format method in a string.
String ^resultString = "";
Console::Clear();
// Format a negative integer or floating-point number in
// various ways.
Console::WriteLine("Standard Numeric Format Specifiers");
resultString = String::Format(CultureInfo::CurrentCulture,
"(C) Currency: . . . . . . . . {0:C}\n" +
"(D) Decimal:. . . . . . . . . {0:D}\n" +
"(E) Scientific: . . . . . . . {1:E}\n" +
"(F) Fixed point:. . . . . . . {1:F}\n" +
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(N) Number: . . . . . . . . . {0:N}\n" +
"(P) Percent:. . . . . . . . . {1:P}\n" +
"(R) Round-trip: . . . . . . . {1:R}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
-123, -123.45f);
Console::WriteLine(resultString);
// Format the current date in various ways.
Console::WriteLine("Standard DateTime Format Specifiers");
resultString = String::Format(CultureInfo::CurrentCulture,
"(d) Short date: . . . . . . . {0:d}\n" +
"(D) Long date:. . . . . . . . {0:D}\n" +
"(t) Short time: . . . . . . . {0:t}\n" +
"(T) Long time:. . . . . . . . {0:T}\n" +
"(f) Full date/short time: . . {0:f}\n" +
"(F) Full date/long time:. . . {0:F}\n" +
"(g) General date/short time:. {0:g}\n" +
"(G) General date/long time: . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(M) Month:. . . . . . . . . . {0:M}\n" +
"(R) RFC1123:. . . . . . . . . {0:R}\n" +
"(s) Sortable: . . . . . . . . {0:s}\n" +
"(u) Universal sortable: . . . {0:u} (invariant)\n" +
"(U) Universal full date/time: {0:U}\n" +
"(Y) Year: . . . . . . . . . . {0:Y}\n",
thisDate);
Console::WriteLine(resultString);
// Format a Color enumeration value in various ways.
Console::WriteLine("Standard Enumeration Format Specifiers");
resultString = String::Format(CultureInfo::CurrentCulture,
"(G) General:. . . . . . . . . {0:G}\n" +
" (default):. . . . . . . . {0} (default = 'G')\n" +
"(F) Flags:. . . . . . . . . . {0:F} (flags or integer)\n" +
"(D) Decimal number: . . . . . {0:D}\n" +
"(X) Hexadecimal:. . . . . . . {0:X}\n",
Color::Green);
Console::WriteLine(resultString);
};
/*
This code example produces the following results:
Standard Numeric Format Specifiers
(C) Currency: . . . . . . . . ($123.00)
(D) Decimal:. . . . . . . . . -123
(E) Scientific: . . . . . . . -1.234500E+002
(F) Fixed point:. . . . . . . -123.45
(G) General:. . . . . . . . . -123
(default):. . . . . . . . -123 (default = 'G')
(N) Number: . . . . . . . . . -123.00
(P) Percent:. . . . . . . . . -12,345.00 %
(R) Round-trip: . . . . . . . -123.45
(X) Hexadecimal:. . . . . . . FFFFFF85
Standard DateTime Format Specifiers
(d) Short date: . . . . . . . 6/26/2004
(D) Long date:. . . . . . . . Saturday, June 26, 2004
(t) Short time: . . . . . . . 8:11 PM
(T) Long time:. . . . . . . . 8:11:04 PM
(f) Full date/short time: . . Saturday, June 26, 2004 8:11 PM
(F) Full date/long time:. . . Saturday, June 26, 2004 8:11:04 PM
(g) General date/short time:. 6/26/2004 8:11 PM
(G) General date/long time: . 6/26/2004 8:11:04 PM
(default):. . . . . . . . 6/26/2004 8:11:04 PM (default = 'G')
(M) Month:. . . . . . . . . . June 26
(R) RFC1123:. . . . . . . . . Sat, 26 Jun 2004 20:11:04 GMT
(s) Sortable: . . . . . . . . 2004-06-26T20:11:04
(u) Universal sortable: . . . 2004-06-26 20:11:04Z (invariant)
(U) Universal full date/time: Sunday, June 27, 2004 3:11:04 AM
(Y) Year: . . . . . . . . . . June, 2004
Standard Enumeration Format Specifiers
(G) General:. . . . . . . . . Green
(default):. . . . . . . . Green (default = 'G')
(F) Flags:. . . . . . . . . . Green (flags or integer)
(D) Decimal number: . . . . . 3
(X) Hexadecimal:. . . . . . . 00000003
*/
Feel free to comment if you can add help to this page or point out issues and solutions you have found. I do not provide support on this site, if you need help with a problem head over to stack overflow.