Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hàm strftime() trong C/C++

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 tm chứ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
%YNăm 4 chữ số (2024)
%mTháng (01-12)
%dNgày (01-31)
%HGiờ 24h (00-23)
%MPhút (00-59)
%SGiây (00-59)
%cNgày giờ theo locale
%FTương đương %Y-%m-%d
%TTương đương %H:%M:%S