Bagikan melalui


strftime, wcsftime, _strftime_l, _wcsftime_l

Memformat string waktu.

Sintaks

size_t strftime(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr
);
size_t _strftime_l(
   char *strDest,
   size_t maxsize,
   const char *format,
   const struct tm *timeptr,
   _locale_t locale
);
size_t wcsftime(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr
);
size_t _wcsftime_l(
   wchar_t *strDest,
   size_t maxsize,
   const wchar_t *format,
   const struct tm *timeptr,
   _locale_t locale
);

Parameter

strDest
String output.

maxsize
strDest Ukuran buffer, diukur dalam karakter (char atau wchar_t).

format
String kontrol format.

timeptr
tm struktur data.

locale
Lokal yang akan digunakan.

Nilai hasil

strftime mengembalikan jumlah karakter yang ditempatkan dan strDestwcsftime mengembalikan jumlah karakter lebar yang sesuai.

Jika jumlah total karakter, termasuk yang mengakhiri null, lebih dari maxsize, baik strftime dan wcsftime mengembalikan 0 dan konten strDest yang tidak ditentukan.

Jumlah karakter dalam strDest sama dengan jumlah karakter harfiah dalam format, ditambah karakter apa pun yang dapat ditambahkan melalui format kode pemformatan. Penghentian null string tidak dihitung dalam nilai pengembalian.

Keterangan

Fungsi strftime dan wcsftime memformat tm nilai timeptr waktu sesuai dengan argumen yang disediakan format dan menyimpan hasilnya dalam buffer strDest. Paling banyak, maxsize karakter ditempatkan dalam string. Untuk deskripsi bidang dalam timeptr struktur, lihat asctime. wcsftime adalah karakter lebar yang setara dengan strftime; argumen string-pointer-nya menunjuk ke string karakter lebar. Fungsi-fungsi ini berulah secara identik jika tidak.

Fungsi ini memvalidasi parameternya. Jika strDest, , formatatau timeptr adalah penunjuk null, atau jika tm struktur data yang ditangani oleh timeptr tidak valid (misalnya, jika berisi nilai di luar rentang untuk waktu atau tanggal), atau jika format string berisi kode pemformatan yang tidak valid, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi mengembalikan 0 dan diatur errno ke EINVAL.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR.H Rutin _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_tcsftime strftime strftime wcsftime

Argumen format terdiri dari satu atau beberapa kode; seperti dalam printf, kode pemformatan didahului oleh tanda persen (%). Karakter yang tidak dimulai disalin % tidak berubah menjadi strDest. Kategori LC_TIME lokal saat ini memengaruhi pemformatan output .strftime (Untuk informasi selengkapnya tentang LC_TIME, lihat setlocale.) Fungsi strftime dan wcsftime menggunakan lokal yang saat ini diatur. Versi _strftime_l dan _wcsftime_l dari fungsi-fungsi ini identik kecuali bahwa fungsi tersebut mengambil lokal sebagai parameter dan menggunakannya alih-alih lokal yang saat ini diatur. Untuk informasi selengkapnya, lihat Lokal.

Fungsi strftime mendukung kode pemformatan ini:

Kode String pengganti
%a Nama hari kerja yang disingkat di lokal
%A Nama lengkap hari kerja di lokal
%b Nama bulan yang disingkat di lokal
%B Nama bulan penuh di lokal
%c Representasi tanggal dan waktu yang sesuai untuk lokal
%C Tahun dibagi 100 dan dipotong menjadi bilangan bulat, sebagai angka desimal (00−99)
%d Hari dalam sebulan sebagai angka desimal (01 - 31)
%D Setara dengan %m/%d/%y
%e Hari dalam sebulan sebagai angka desimal (1 - 31), di mana satu digit didahului oleh spasi
%F Setara dengan %Y-%m-%d
%g 2 digit terakhir dari tahun berbasis minggu ISO 8601 sebagai angka desimal (00 - 99)
%G Tahun berbasis minggu ISO 8601 sebagai angka desimal
%h Nama bulan yang disingkat (setara %bdengan )
%H Jam dalam format 24 jam (00 - 23)
%I Jam dalam format 12 jam (01 - 12)
%j Hari dalam setahun sebagai angka desimal (001 - 366)
%m Bulan sebagai angka desimal (01 - 12)
%M Menit sebagai angka desimal (00 - 59)
%n Karakter baris baru (\n)
%p Indikator A.M./P.M. lokal untuk jam 12 jam
%r Waktu jam 12 jam lokal
%R Setara dengan %H:%M
%S Kedua sebagai angka desimal (00 - 59)
%t Karakter tab horizontal (\t)
%T Setara dengan %H:%M:%Sformat waktu ISO 8601
%u ISO 8601 hari kerja sebagai angka desimal (1 - 7; Senin adalah 1)
%U Jumlah minggu dalam setahun sebagai angka desimal (00 - 53), di mana Hari Minggu pertama adalah hari pertama dalam seminggu 1
%V Nomor minggu ISO 8601 sebagai angka desimal (00 - 53)
%w Hari kerja sebagai angka desimal (0 - 6; Minggu adalah 0)
%W Jumlah minggu dalam setahun sebagai angka desimal (00 - 53), di mana Senin pertama adalah hari pertama dalam seminggu 1
%x Representasi tanggal untuk lokal
%X Representasi waktu untuk lokal
%y Tahun tanpa abad, sebagai angka desimal (00 - 99)
%Y Tahun dengan abad, sebagai angka desimal
%z Offset dari UTC dalam format ISO 8601; tidak ada karakter jika zona waktu tidak diketahui
%Z Baik nama zona waktu lokal atau singkatan zona waktu, tergantung pada pengaturan registri; tidak ada karakter jika zona waktu tidak diketahui
%% Tanda persen

Seperti dalam printf fungsi , # bendera dapat mengawali kode pemformatan apa pun. Dalam hal ini, arti kode format diubah sebagai berikut.

Memformat kode Makna
%#a, %#A, %#b, %#B, %#g, %#G, %#h, %#n, %#p, %#t, %#u, %#w, %#X, %#z, %#Z, %#% # bendera diabaikan.
%#c Representasi tanggal dan waktu yang panjang, sesuai untuk lokal. Misalnya: "Selasa, 14 Maret 1995, 12:41:29".
%#x Representasi tanggal panjang, sesuai dengan lokal. Misalnya: "Selasa, 14 Maret 1995".
%#d, %#D, %#e, %#F, %#H, %#I, %#j, %#m, %#M, %#r, %#R, %#S, %#T, %#U, %#V, %#W, %#y, %#Y Hapus awalan nol atau spasi (jika ada).

MINGGU ISO 8601 dan tahun berbasis minggu yang diproduksi oleh %V, %g, dan %G, menggunakan minggu yang dimulai pada hari Senin. Minggu 1 adalah minggu yang berisi hari keempat Januari, yang merupakan minggu pertama yang mencakup setidaknya empat hari dalam setahun. Jika Senin pertama tahun ini adalah hari ke-2, ke-3, atau ke-4, hari-hari sebelumnya adalah bagian dari minggu terakhir tahun sebelumnya. Untuk hari-hari tersebut, %V digantikan oleh 53, dan keduanya %g dan %G digantikan oleh digit tahun sebelumnya.

Catatan

Saat menggunakan salah strftime satu fungsi dengan pointer yang tm dikembalikan dari gmtime, nilai yang dicetak melalui penentu %Z dan %z tidak akan akurat. Ini karena tm struktur seperti yang ditentukan oleh Standar C tidak berisi informasi untuk nama zona waktu atau offset. Sebaliknya, informasi zona waktu diisi melalui variabel global dan _dstbias._timezone

Persyaratan

Rutin Header yang diperlukan
strftime <time.h>
wcsftime <time.h> atau <wchar.h>
_strftime_l <time.h>
_wcsftime_l <time.h> atau <wchar.h>

Fungsi _strftime_l dan _wcsftime_l khusus Microsoft. Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

Lihat contoh untuk time.

Baca juga

Lokal
Manajemen waktu
Manipulasi string
localeconv
setlocale, _wsetlocale
strcoll Fungsi
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l