【发布时间】:2020-11-17 17:52:38
【问题描述】:
我有一个挂载驱动器中的文件列表。我正在尝试设置访问和修改时间。
这是使用utime修改前的stat信息
Access: 2020-07-28 15:06:51.000000000 +0530
Modify: 2020-07-28 15:06:51.000000000 +0530
这里是使用utime后的stat信息。
Access: 2020-07-28 21:20:47.-469639744
Modify: 2020-07-28 21:20:47.-469740064
这里是代码
#include <stdio.h>
#include <utime.h>
#include <time.h>
#include <string.h>
#include <errno.h>
int main(void) {
const char *filepath = "pathToFile/file";
struct utimbuf ubuf;
ubuf.actime = time(NULL) + (time_t)(6*60*60);
ubuf.modtime = time(NULL) + (time_t)(6*60*60);
errno = 0;
int ret = utime(filepath, &ubuf);
if (ret == -1) {
printf("Error is: %s\n", strerror(errno));
} else {
puts("No Error!");
}
return 0;
}
这里如何保留+0530的时区信息?
【问题讨论】:
-
没有时区信息。只是
stat就是这样显示的。stat显示未来日期的时区会很奇怪。 -
请选择一种语言并坚持下去。 C 和 C++ 是两种非常不同的语言,对于任何给定的问题可能有不同的解决方案。而且您的代码是 POSIX 特定的,因此您应该添加
posix标记。 -
另请注意,POSIX 将
utime标记为已过时,您不应在新代码中使用它。 -
错误属于标准错误。
fprintf(stderr, "Error ... -
@Someprogrammerdude 不知道通过显示这个例子的 IBM 网站,推荐的方式是什么?