Unix时间作为本地时间的int
Unix time as int to local time
我有一个函数返回unix时间戳作为int。
我需要将此int转换为本地时间的字符串dd/mm/yy
。"局部"部分给我带来了问题,如果不是因为这个,我可以自己编写一个函数来转换它。
我已经搜索了周围,似乎标准库中的ctime
类将是理想的,以这样的方式:
int unixtime;
std::cout << std::asctime(std::localtime(unixtime));
遗憾的是,只有*time_t
被接受。有什么方法可以将int转换成这种格式,或者有什么更好的方法将unix时间转换为int的本地时间?
time_t
根据定义是算术类型,您可以这样做:
time_t ts = unixtime;
std::cout << std::asctime(std::localtime(&ts));
'/* localtime example */
#include <stdio.h> /* puts, printf */
#include <time.h> /* time_t, struct tm, time, localtime */
int main ()
{
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
printf ("Current local time and date: %s", asctime(timeinfo));
return 0;
}'
你可以简单地使用time_t类型,它会给你时间
" ctime(), gmtime()和localtime()函数都接受一个数据类型为time_t的参数,它表示日历时间。当被解释为绝对时间值时,它表示自Epoch 1970-01-01 00:00:00 +0000 (UTC)以来经过的秒数。"
:
- http://linux.die.net/man/3/ctime
- http://linux.die.net/man/7/time
要以年/月/日为单位打印当前时间,您可以尝试以下操作:
#include <iostream>
#include <ctime>
int main(int argc, const char** argv)
{
char date_buff[40];
time_t time_value = time(0);
struct tm* my_tm = localtime(&time_value);
strftime(date_buff, sizeof(date_buff), "%d/%m/%yn", my_tm);
std::cout << date_buff << std::endl;
return 0;
}
time_t
的类型不受C规范的保证。
Unix和posix兼容系统将time_t
类型实现为有符号整数(通常为32或64位宽),表示从Unix纪元开始的秒数。因此,您可以执行以下操作
std::time_t my_time = static_cast<std::time_t>(unixtime);
但是,最好不要假设时间为int
,而是用适当的时间处理替换时间函数,并返回std::time_t
或struct tm
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- C++ - 最坏情况和平均情况插入时间复杂度在 std::unordered_map <int,int>?
- 没有从"int"到"时间"的可行转换
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- 无法将 int 类型转换为时间类型(我的类类型)
- 通过引用传递基元类型(如 int、bool)是否比按值传递有任何加速?还是会恶化时间/空间的使用
- 如何在C++中将无符号的 int 64 转换为时间
- 解析时间戳char到INT进行计算
- 单元测试 - 仅在"int main()"左右重新编译以减少编译时间
- 崩溃时间(运算符 new(无符号 int)+22)
- 在与时间一起使用 srand 时,如果我没有time_t参数明确地将参数转换为无符号的 int 参数,这有关系吗?
- 从int到长时间进行打字
- 使用强制转换和设置填充将 int 值更改为时间
- 将系统时间 int 转换为格式化的时间字符串
- 获取系统时间(以毫秒为单位)作为int/double
- 如何用O(n)个时间和O(1)个空间对n个对象的群进行排序.每个对象有两个字段:int和string
- Unix时间作为本地时间的int
- ' const int a = 1; '是' a '一个常量表达式,如果' a '具有自动存储持续时间
- float与int比较所需的额外时间