使用C语言写一个显示年月日时分秒、毫秒的程序
时间: 2023-09-17 11:11:54 浏览: 116
以下是使用C语言编写显示年月日时分秒、毫秒的程序:
```c
#include <stdio.h>
#include <time.h>
int main()
{
struct timeval tv;
struct tm* ptm;
char time_string[40];
long milliseconds;
gettimeofday(&tv, NULL);
ptm = localtime(&tv.tv_sec);
strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm);
milliseconds = tv.tv_usec / 1000;
printf("Current date and time: %s.%ld\n", time_string, milliseconds);
return 0;
}
```
该程序使用了time.h头文件中的结构体和函数来获取当前的时间信息,包括年月日时分秒和毫秒。其中,gettimeofday()函数可以获取当前时间的秒数和毫秒数,localtime()函数可以将秒数转换为当地时间,strftime()函数可以将时间格式化为字符串。最后通过printf()函数将时间信息输出到终端。
相关问题
ds12887用c语言设计一个程序设计年月日时分秒
以下是一个使用 C 语言编写的 DS12887 时钟芯片程序,可以获取当前的年月日时分秒:
```c
#include <stdio.h>
#include <dos.h>
#define RTC_ADDR 0x70
#define RTC_DATA 0x71
#define RTC_SECONDS 0x00
#define RTC_MINUTES 0x02
#define RTC_HOURS 0x04
#define RTC_DAY 0x07
#define RTC_MONTH 0x08
#define RTC_YEAR 0x09
void read_rtc(unsigned char addr, unsigned char *value) {
outportb(RTC_ADDR, addr);
*value = inportb(RTC_DATA);
}
int bcd_to_decimal(unsigned char bcd) {
return ((bcd >> 4) * 10) + (bcd & 0x0F);
}
void get_time(int *year, int *month, int *day, int *hour, int *minute, int *second) {
unsigned char value;
read_rtc(RTC_SECONDS, &value);
*second = bcd_to_decimal(value);
read_rtc(RTC_MINUTES, &value);
*minute = bcd_to_decimal(value);
read_rtc(RTC_HOURS, &value);
*hour = bcd_to_decimal(value);
read_rtc(RTC_DAY, &value);
*day = bcd_to_decimal(value);
read_rtc(RTC_MONTH, &value);
*month = bcd_to_decimal(value);
read_rtc(RTC_YEAR, &value);
*year = bcd_to_decimal(value) + 2000;
}
int main() {
int year, month, day, hour, minute, second;
get_time(&year, &month, &day, &hour, &minute, &second);
printf("Current time: %04d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second);
return 0;
}
```
这个程序使用了 DOS 的 inportb 和 outportb 函数来读取 DS12887 时钟芯片的寄存器值,并将 BCD 编码转换为十进制数。最后,程序输出当前的年月日时分秒。
C语言将时间戳转换为年月日时分秒
在C语言中,可以使用gmtime函数或localtime函数将时间戳转换为年、月、日、时、分、秒等具体时间信息。这两个函数的区别在于,gmtime将时间戳转换为UTC时间(协调世界时),而localtime将时间戳转换为本地时间。
下面是一个示例代码,演示如何将时间戳转换为年、月、日、时、分、秒:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t timestamp = 1630512000; // 假设时间戳为1630512000
struct tm *timeinfo;
timeinfo = localtime(×tamp);
printf("年:%d\n", timeinfo->tm_year + 1900);
printf("月:%d\n", timeinfo->tm_mon + 1);
printf("日:%d\n", timeinfo->tm_mday);
printf("时:%d\n", timeinfo->tm_hour);
printf("分:%d\n", timeinfo->tm_min);
printf("秒:%d\n", timeinfo->tm_sec);
return 0;
}
```
在上述代码中,将时间戳1630512000赋值给timestamp变量。然后,使用localtime函数将时间戳转换为本地时间,并将结果保存在timeinfo结构体中。接下来,通过访问timeinfo结构体的成员来获取具体的年、月、日、时、分、秒信息,并使用printf函数打印出来。
请注意,timeinfo结构体中的年份是从1900年开始计数的,所以需要加上1900才能得到正确的年份。月份是从0开始计数的,所以需要加上1才能得到正确的月份。