在使用C++的Linux环境中,我需要将time_t值转换为不同时区的英文字符串表示形式。例如1305750080 - >“2011-05-18 13:21:20 PST”。我可以使用gmtime()或localtime()与strftime()结合来为GMT和我的本地时区生成字符串。我将如何选择一个替代时区?C++ time_t到特定时区的std :: string
回答
我认为你可以用tzset来做到这一点。
setenv("TZ", "EST5EDT", 1);
tzset();
gmtime()
reference link here举例说明了一种应用时区偏移的非常简单的方法。当然,你可以创建一个枚举或什么的类,并提出一些更好的东西。
或者boost::date_time
有一个相当广泛的实现,可以在linux和windows上运行。
我发现这个引用,但是如果日期换行,那么不会引起问题吗? – 2011-05-18 20:36:01
我会建议提高太.. – Nim 2011-05-18 20:38:55
@JoshG:是的,这个简单的例子只处理时间,而不是日期,并且不处理与UTC有小数偏移的时区(如印度)。我可能也会使用提升。 – 2011-05-18 21:07:12
您可以使用putenv
将环境变量TZ
更改为您想要的任何时区,然后使用localtime
或最好是localtime_r
。如果需要,您可以使用getenv
缓存旧副本。
- 1. std :: string name和std :: string&name之间的C++区别
- 2. C++ std :: string和string
- 3. 从std :: basic_istream复制特定数量的字符到std :: string
- 4. C++ std :: string到Ruby VALUE
- 5. C++ std :: string到布尔值
- 6. 用特殊字符搜索C++ std :: string
- 7. C++循环std :: vector <std :: map <std :: string,std :: string>>
- 8. 将std :: string转换为MSVC特定__int64
- 9. 输出的char *到的std :: string C++
- 10. C++的std :: string到char与OpenGL的LoadBMP
- 11. 的std :: string到LPOLESTR
- 12. Cython C++和std :: string
- 13. 转换双*到std :: string的在C++
- 14. 迭代器到std :: string中的特定字符
- 15. 使用std :: sscanf和std :: string的C++
- 16. std :: string :: c_str和std :: string :: data有什么区别?
- 17. 用C++中的另一个std :: string替换给定std :: string的实例
- 18. 的std :: string :: c_str()和临时
- 19. C++的std :: string构造
- 20. C++:的std :: string问题
- 21. 在C#中的std :: string?
- 22. 转换UINT8 *到的std :: string
- 23. std :: string :: append(std :: string)错误的输出
- 24. boost :: format表单c-string或std :: string
- 25. C++/CX:将std :: string转换为Platform :: String^
- 26. C++ const std :: string赋值
- 27. 如何从std :: string获得可写的C缓冲区?
- 28. 在C++ Builder和VC++中使用std :: string的区别
- 29. 使用std :: get_time将时间字符串转换为std :: time_t:错误结果
- 30. 使用std :: list时使用std :: string的内存泄漏<std::string>
我已经重申了这一点,因为接受的答案是调用不在C++标准库中的函数;而是在POSIX标准中。 – 2011-05-18 21:53:05