[入门] 怎么得到本地时间

tuja 2007-06-23
import std.date;
import std.stdio;
void main()
{
	long lUtc = getUTCtime(); //得到UTC时间
	long lLocal = UTCtoLocalTime(lUtc);//转化成本地时间,可是无效
	writefln(lUtc);
	writefln(lLocal);//打印出的值一样
}


查UTCtoLocalTime的实现:
d_time LocalTimetoUTC(d_time t)
{
    return (t == d_time_nan)
	? d_time_nan
	: t - LocalTZA - DaylightSavingTA(t - LocalTZA);
}

//LocalTZA被定义成0,是这个函数无效的主要原因
d_time LocalTZA = 0;


大家是怎么解决这个时区转换问题的?
oldrev 2007-06-23
api
tuja 2007-06-25
标准库由教主一个人驱动,而不是由社区驱动,真被它害苦了,这个很小的bug,好几年了还没有修正。可能只是windows下有问题
只好自己写个函数解决:
d_time getLocalTime()
{
	DWORD r;
	TIME_ZONE_INFORMATION tzi;
	r = GetTimeZoneInformation(&tzi);
	int b = tzi.Bias;	
	return std.date.getUTCtime() - TicksPerMinute * b;
}


使用举例
 void main()
 {
	 d_time l = getLocalTime();
	 writefln(Day(l));
	 writefln(HourFromTime(l));
	 writefln(MinFromTime(l));
 }



yeenlai09 2011-03-20
betty_betty2008 2011-03-21
什么版本的D?如果是D2,你可以:
1.用Johnnathan 新做std.datetime,而std.date将会被前者替代
2.用std.date时需先把std.datebase引入。
Global site tag (gtag.js) - Google Analytics