How to fix date format?

Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Apr 25 22:21:32 PDT 2017


On Wednesday, April 26, 2017 04:02:12 Suliman via Digitalmars-d-learn wrote:
> I tried to do:
>
> writeln(DateTime.toISOExtString(DateTime.fromSimpleString(point[1].coerce!
> string)));
>
> But got error:
>
> Error: function std.datetime.DateTime.toISOExtString () const is
> not callable using argument types (DateTime)
> Error: function database.Database.getSingleTrackInfo no return
> exp; or assert(0); at end of function

toISOExtString is a normal member function on DateTime, not a static member
function. If point[1].coerce!string is giving you a string in Boost's
"simple time" format (e.g. "2016-Jan-04 12:19:17"), then
DateTime.fromSimpleString(point[1].coerce!string) will give you a DateTime.
Then if you called toISOExtString() on that, e.g.

DateTime dt = DateTime.fromSimpleString(point[1].coerce!string);
string str = dt.toISOExtString();

then the string would be in the ISO extended format (e.g.
"2016-01-04T12:19:17"). If you then wanted that in the format
"2016-01-04 12:19:17", then you could just replace the 'T' with ' ', e.g.

DateTime dt = DateTime.fromSimpleString(point[1].coerce!string);
string str = dt.toISOExtString().replace("T", " ");

And if you have "2016-01-04 12:19:17", and you want to convert that to the
Boost simple time format, you could do

DateTime dt = DateTime.fromISOExtString(str.replace(" ", "T"))
auto simpleStr = dt.toSimpleString();

Hopefully, that helps.

- Jonathan M Davis



More information about the Digitalmars-d-learn mailing list