Hàm strftime() định dạng thời gian/ngày tháng thành chuỗi. Khai báo trong <time.h>. Trả về số ký tự copy được (nếu vừa trong buffer), ngược lại trả 0.
Cú pháp
size_t strftime(char *str, size_t maxsize,
const char *format, const struct tm *timeptr);
Tham số:
- str – Buffer đích
- maxsize – Số ký tự tối đa copy
- format – Chuỗi định dạng (các specifier %...)
- timeptr – Con trỏ
struct tmchứa thời gian
Ví dụ
#include <stdio.h>
#include <time.h>
int main() {
time_t timer;
struct tm *local;
char buf[80];
time(&timer);
local = localtime(&timer);
strftime(buf, 20, "%x - %I:%M%p", local);
printf("Ngay gio da format: %s", buf);
return 0;
}
Kết quả
Ngay gio da format: 10/23/18 - 10:33AM
Giải thích: time() lấy thời gian hiện tại (epoch). localtime() chuyển thành struct tm giờ địa phương. strftime() định dạng theo %x (ngày), %I:%M%p (giờ 12h AM/PM).
Các format specifier phổ biến
| Specifier | Ý nghĩa |
|---|---|
| %Y | Năm 4 chữ số (2024) |
| %m | Tháng (01-12) |
| %d | Ngày (01-31) |
| %H | Giờ 24h (00-23) |
| %M | Phút (00-59) |
| %S | Giây (00-59) |
| %c | Ngày giờ theo locale |
| %F | Tương đương %Y-%m-%d |
| %T | Tương đương %H:%M:%S |