linux c 时间戳还原当前时间
时间: 2024-09-21 12:10:51 浏览: 86
在Linux C语言中,如果你得到了一个时间戳(通常是`time_t`类型的值,代表自1970年1月1日00:00:00 GMT以来的秒数),你可以使用`gmtime()`函数将其转换回人类可读的时间。这里是一个简单的示例:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t timestamp = 1645783200; // 假设这是某个时间戳
struct tm* timeinfo;
char buffer[80];
timeinfo = gmtime(×tamp); // 将时间戳转换为tm结构体
strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", timeinfo); // 格式化日期和时间
printf("原始时间戳: %s\n", buffer);
return 0;
}
```
这个代码首先获取了时间戳,然后通过`gmtime()`函数将其转换成`struct tm`类型的结构体,再用`strftime()`函数将该结构体转换为字符串,按照"YYYY-MM-DD HH:MM:SS"这样的格式显示出来。
相关问题
linux c 根据时间戳还原事件
在Linux C环境中,如果你有某个文件并且你知道它的创建或修改时间戳(mtime或atime),如果你想还原这个事件的具体发生时间,你可以使用系统调用`stat()`来获取文件的信息,然后使用`ctime()`函数将其转换为人类可读的时间字符串。假设有一个名为`file.txt`的文件,示例代码如下:
```c
#include <stdio.h>
#include <sys/stat.h>
#include <time.h>
int main() {
struct stat file_info;
char* time_string;
// 获取文件状态信息
if (stat("file.txt", &file_info) != 0) {
perror("Failed to get file info");
return 1;
}
// 将时间戳转换为时间字符串
time_t file_time = file_info.st_mtime; // 或者 st_atime
time(&file_time); // 确保是当前时间系统的时区
time_string = ctime(&file_time);
// 输出时间字符串
printf("The event occurred at: %s\n", time_string);
// 注意:ctime返回的是包含时间戳和星期几的一串字符,需要进一步处理才能只保留日期部分
free(time_string);
return 0;
}
```
阅读全文