D:打印当月的数字而不是其名称

时间:2015-10-14 06:58:27

标签: datetime d datetime-format

我需要获得当月的数量,而不是得到它的名字:

void main()
{
    SysTime dt = Clock.currTime();
    writeln(dt.month);
}

输出结果为:

oct

但我需要10。我怎么能得到它?我发现只有一个解决方案castint,但有没有更好的方法,或者没问题?

3 个答案:

答案 0 :(得分:3)

使用std.conv.to()转换类型。

这似乎有效:

import std.conv;
import std.datetime;
import std.stdio;

void main()
{
    SysTime dt = Clock.currTime();
    writeln(dt.month.to!ushort);
}

10

答案 1 :(得分:2)

如果您只需要打印,请使用下面的writefln

writefln("%d", dt.month);

如果您需要使用该号码,则可以使用to模板,该模板通常应用于转化。

writeln(dt.month.to!size_t);
// or ...
writeln(to!size_t(dt.month));

最终你也可以施展它。

writeln(cast(size_t)dt.month);

答案 2 :(得分:0)

默认情况下不需要显式转换,因为月枚举的类型是 int (查看有关enums的更多信息)。

import std.datetime;

// Month is an enum - http://dlang.org/phobos/std_datetime.html#.Month
Month month = Clock.currTime().month;
int monthnum = 0 + month; // works