Python中文
首页
教程
问答
标签
搜索
登录
注册
本地时间在运行在Cygwin shell上的Windows程序中返回GMT
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>考虑以下代码:</p> <pre><code>time_t t; t = time( NULL ); elog << "timezone: " << getenv( "TZ" ) << ", current local time: " << asctime( localtime( &t )); </code></pre> <p>如果我使用MSVC生成此代码,并在windows DOS shell下运行,则会获得正确的本地时间:</p> ^{pr2}$ <p>但是如果我在类似于bash的cygwin shell下运行相同的程序,这个代码将返回GMT!在</p> <pre><code>timezone: America/New_York, current local time: Wed Jul 25 18:05:08 2012 </code></pre> <p>如果我在Linux或OsX上运行这个程序,它也会返回正确的本地时间。在</p> <p>为什么?在</p> <p>@Update:一年后的今天,我发现我下面给出的答案并不总是有效的。在</p> <p>似乎对于某些程序来说,使TZ不稳定并不总是有效的。我不知道为什么。但是有一个麻烦的解决办法。如果你不在本地时间段调整时间,那就调用本地时间调整器()</p> <pre><code>u64 localTimeOffset = 0; static void unsetTz() { static bool unsetTZ = false; if ( !unsetTZ ) { putenv( "TZ=" ); unsetTZ = true; // unsetting TZ does not always work. So we have to check if it worked // and make a manual adjustment if it does not. For long running programs // that may span DST changes, this may cause the DST change to not take // effect. s32 tzOffset = getTzOffset(); if ( tzOffset ) { static char timeBuf[48]; char* s = &(timeBuf[0]); struct tm* timeInfoGMT; struct tm* timeInfoLocal; time_t zero = 86400; timeInfoGMT = gmtime( &zero ); u32 GMTHour = timeInfoGMT->tm_hour; timeInfoLocal = localtime( &zero ); u32 localHour = timeInfoLocal->tm_hour; if ( localHour == GMTHour ) { // unsetting tz failed. So we have to make a manual adjustment localTimeOffset = tzOffset * 60 * 60; } } } } s32 getTzOffset() { TIME_ZONE_INFORMATION tzInfo; GetTimeZoneInformation( &tzInfo ); s32 tz = ( tzInfo.Bias / 60 ); return tz; } </code></pre> <p>拨打当地时间:</p> <pre><code> time_t t = getAtTimeFromSomewhere(); t -= localTimeOffset; timeInfo = localtime( &t ); </code></pre> <p>打电话给maketime:</p> <pre><code> struct tm timestr; makeATMFromAStringForExample( time, timestr ); time_t timet = mktime( &timestr ); timet += localTimeOffset; </code></pre> <p>好时光。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在Cygwin shell中使用<code>export TZ=""</code>可能是最好的方法。在</p> <p>@更新<br/> 嗨,图纳基。感谢编辑!在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
3 回答
当用户登录到站点时,如何显示不同的导航栏
9 回答
当用户登录时,在Flask中向用户显示处理结果
2 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
2 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
3 回答
当用户的付款逾期2天时,从Django模型检索数据
10 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
7 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
5 回答
当用户确定打印数量时,使用Matplotlib打印动画
5 回答
当用户离开时是否可以删除整个网页?
7 回答
当用户给出一个单词时如何打印?
5 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
5 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
9 回答
当用户被更改时,消息不会来自web套接字
9 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
2 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
5 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
2 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
8 回答
当用户购买某个类别时,是否查找其他类别的销售?
4 回答
当用户转到上一页时,Django和芹菜插入操作
5 回答