1、将UNIX时间戳转为东八区时间字符串
#include <stdio.h>
#include <time.h>
void unix_timestamp_to_string(time_t timestamp, char* time_string) {
struct tm * timeinfo;
timestamp = 8*3600+timestamp;
timeinfo = localtime(×tamp);
//timeinfo->tm_hour += 8; // 增加8小时来获取东八区时间
strftime(time_string, 20, "%Y-%m-%d %H:%M:%S", timeinfo);
}
int main() {
time_t timestamp = 1609459200; // 2021年1月1日08:00:00,UTC时间
char time_string[80];
unix_timestamp_to_string(timestamp, time_string);
printf("Converted time: %s\n", time_string);
return 0;
}
2、将时间字符串(无分隔符)转为UNIX时间戳
#include <stdio.h>
#include <time.h>
time_t string_to_unix_timestamp(const char *time_str) {
struct tm tm_time = {0}; // 初始化 tm 结构体
// 解析时间字符串
if (sscanf(time_str, "%4d%2d%2d%2d%2d",
&tm_time.tm_year, &tm_time.tm_mon, &tm_time.tm_mday,
&tm_time.tm_hour, &tm_time.tm_min) != 5) {
printf("Invalid data\n");
return 0;
}
// 由于 tm_year 表示的是自 1900 年起的年数,需要减去 1900
tm_time.tm_year -= 1900;
// 减去 1 来使月份从 0 开始,即 0 表示 1 月
tm_time.tm_mon -= 1;
// 将 tm 结构体转换为时间戳并返回
return mktime(&tm_time);
}
int main() {
const char *time_str = "202203121030";
time_t timestamp = string_to_unix_timestamp(time_str);
if (timestamp != 0) {
printf("Unix timestamp: %ld\n", timestamp);
}
return 0;
}
3、将将时间字符串(含分隔符-
,:
)转为UNIX时间戳
#include <stdio.h>
#include <time.h>
time_t string_to_unix_timestamp(char *time_str) {
struct tm tm;
time_t timestamp;
strptime(time_str, "%Y-%m-%d %H:%M:%S", &tm); // 解析时间字符串
timestamp = mktime(&tm); // 转换为时间戳
return timestamp;
}
int main() {
char time_str[] = "2022-03-12 10:30:00";
time_t timestamp = string_to_unix_timestamp(time_str);
if (timestamp != -1) {
printf("Unix timestamp: %ld\n", timestamp);
struct tm *timeinfo = localtime(×tamp);
printf("Converted time: %s\n", asctime(timeinfo));
} else {
printf("Invalid data\n");
}
return 0;
}
4、获取系统中的东八区时间
#include <stdio.h>
#include <time.h>
void get_local_time() {
time_t rawtime;
struct tm * timeinfo;
char buffer[80];
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", timeinfo);
printf("Local time: %s\n", buffer);
}
int main() {
get_local_time();
return 0;
}