Merhaba,
Vibe.d ile çalışırken BsonDate (http://vibed.org/api/vibe.data.bson/BsonDate) tarih tipini kullanıyorum ancak mevcut toString() metodu sadece ISOExtString() formatında tarih bilgisi döndürüyor. C# tarafında DateTime nesnelerinin toString() metodu içinde tarih biçimini tanımlayabiliyorum. Bu sistemi Vibe.d ile kullanabileceğim bir çözüm geliştirmeye çalışıyorum. Eğer güzel bir şeyler ortaya çıkarsa belki Vibe.d deposuna gönderirim ve ana depoya eklenir.
Şöyle bir şeyler yaptım. Elbette eksik veya hatalarım olabilir, sizlerde bir bakar mısınız?
import std.stdio;
import std.datetime;
import std.array;
import std.conv;
void main()
{
SysTime date = SysTime(Date(2016, 3, 5));
writeln("Format: (d.m.y) -> " ~ formatDate("d.m.y", date));
writeln("Format: (y-m-d) -> " ~ formatDate("y-m-d", date));
writeln("Format: (d/m/y) -> " ~ formatDate("d/m/y", date));
}
string formatDate(string format, SysTime date)
{
string ret = "";
int i = 0;
while (i < format.length)
{
char ch = format[i];
switch (ch)
{
case 'd':
ubyte d = date.day;
ret ~= d < 10 ? "0" ~ to!string(d) : to!string(d);
break;
case 'm':
ubyte m = date.month;
ret ~= m < 10 ? "0" ~ to!string(m) : to!string(m);
break;
case 'y':
ret ~= to!string(date.year);
break;
default:
ret ~= ch;
}
i++;
}
return ret;
}
unittest
{
SysTime date = SysTime(Date(2016, 3, 5));
assert(formatDate("d.m.y", date) == "05.03.2016");
assert(formatDate("y-m-d", date) == "2016-03-05");
assert(formatDate("d/m/y", date) == "05/03/2016");
assert(formatDate("y&m&d", date) == "2016&03&05");
assert(formatDate("m=d=y", date) == "03=05=2016");
}
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]