mktime
, _mktime32
, _mktime64
Yerel saati takvim değerine dönüştürün.
Sözdizimi
time_t mktime(
struct tm *timeptr
);
__time32_t _mktime32(
struct tm *timeptr
);
__time64_t _mktime64(
struct tm *timeptr
);
Parametreler
timeptr
Zaman yapısı işaretçisi; bkz asctime
. .
Dönüş değeri
_mktime32
türündeki time_t
bir değer olarak kodlanmış belirtilen takvim saatini döndürür. timeptr
Gece yarısından önceki bir tarihe, 1 Ocak 1970'e başvuruda bulunursa veya takvim saati temsil edilemiyorsa, _mktime32
türüne time_t
-1 atama döndürür. ve kullanılırken _mktime32
, 18 Ocak 2038, Eşgüdümlü Evrensel Saat (UTC) tarihinden sonraki bir tarihe başvuruda bulunursa timeptr
, yazmak time_t
için -1 atama döndürür.
_mktime64
23:59:59, 31 Aralık 3000, UTC tarihinden sonraki bir tarihe başvuruda bulunursatimeptr
, -__time64_t
1 türüne dönüştürme döndürür.
Açıklamalar
mktime
ve _mktime64
işlevleri, _mktime32
tarafından işaret edilen timeptr
sağlanan zaman yapısını (büyük olasılıkla eksik) normalleştirilmiş değerlere sahip tam tanımlı bir yapıya dönüştürür ve sonra bunu takvim time_t
saat değerine dönüştürür. Dönüştürülen süre, işlev tarafından döndürülen değerlerle aynı kodlamaya time
sahiptir. Yapının ve tm_yday
bileşenlerinin tm_wday
timeptr
özgün değerleri yoksayılır ve diğer bileşenlerin özgün değerleri normal aralıklarıyla sınırlı değildir.
mktime
, tanımlanmadığı sürece ile eşdeğer _mktime64
olan bir satır içi işlevdir ve bu durumda ile eşdeğerdir_mktime32
._USE_32BIT_TIME_T
UTC'de yapılan bir düzeltmeden sonra, _mktime32
1 Ocak 1970 gece yarısından 23:59:59'a kadar olan tarihleri 18 Ocak 2038, UTC olarak işler. _mktime64
1 Ocak 1970 ile 31 Aralık 3000 arasında gece yarısından 23:59:59'a kadar olan tarihleri işler. Bu ayarlama, belirttiğiniz tarih aralık içinde olsa bile bu işlevlerin -1 (veya öğesine) döndürmesine time_t
__time32_t
__time64_t
neden olabilir. Örneğin, UTC'den iki saat önce olan Mısır'ın Kahire şehrini kullanıyorsanız, ilk olarak içinde belirttiğiniz timeptr
tarihten iki saat çıkarılır; çıkarma işlemi artık tarihinizi aralığın dışına koyabilir.
Bu işlevler bir tm
yapıyı doğrulamak ve doldurmak için kullanılabilir. Başarılı olursa, bu işlevler ve tm_yday
değerlerini tm_wday
uygun olarak ayarlar ve diğer bileşenleri belirtilen takvim zamanını temsil etmek için ayarlar, ancak değerleri normal aralıklara zorlanır. değerinin tm_mday
son değeri, ve tm_year
belirlenene kadar tm_mon
ayarlanmaz. Bir tm
yapı süresi belirtirken alanı şu şekilde ayarlayın tm_isdst
:
Standart saatin etkin olduğunu belirtmek için sıfır (0).
Gün ışığından yararlanma saatinin etkin olduğunu belirtmek için 0'dan büyük bir değer.
C çalışma zamanı kitaplık kodunun standart saat veya gün ışığından yararlanma saati etkin olup olmadığını hesaplamasını sağlamak için sıfırdan küçük bir değer.
C çalışma zamanı kitaplığı, ortam değişkeninden TZ
yaz saati davranışını belirler. Ayarlı değilse TZ
, win32 API çağrısı GetTimeZoneInformation
işletim sisteminden gün ışığından yararlanma saati bilgilerini almak için kullanılır. Çağrı başarısız olursa kitaplık, yaz saati hesaplamasını uygulamak için Birleşik Devletler kurallarının kullanıldığını varsayar. tm_isdst
gerekli bir alandır. Ayarlanmamışsa, değeri tanımlanmamıştır ve bu işlevlerden döndürülen değer tahmin edilemez. , veya (veya localtime
bu işlevlerin çeşitlemeleri) için önceki bir çağrı tarafından döndürülen bir tm
yapıya gmtime
asctime
işaret edersetimeptr
, tm_isdst
alan doğru değeri içerir.
gmtime
ve localtime
(ve _gmtime32
, _gmtime64
, _localtime32
ve _localtime64
) işlevleri, dönüştürme için iş parçacığı başına tek bir arabellek kullanır. Bu arabelleği veya için mktime
_mktime32
_mktime64
sağladığınızda, önceki içerik yok edilir.
Bu işlevler parametrelerini doğrular. Boş bir işaretçiysetimeptr
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, işlevler -1 döndürür ve olarak EINVAL
ayarlanırerrno
.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.
Gereksinimler
Yordam | Gerekli başlık |
---|---|
mktime |
<time.h> |
_mktime32 |
<time.h> |
_mktime64 |
<time.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Kitaplıklar
C çalışma zamanı kitaplıklarının tüm sürümleri.
Örnek
// crt_mktime.c
/* The example takes a number of days
* as input and returns the time, the current
* date, and the specified number of days.
*/
#include <time.h>
#include <stdio.h>
int main( void )
{
struct tm when;
__time64_t now, result;
int days;
char buff[80];
time( &now );
_localtime64_s( &when, &now );
asctime_s( buff, sizeof(buff), &when );
printf( "Current time is %s\n", buff );
days = 20;
when.tm_mday = when.tm_mday + days;
if( (result = mktime( &when )) != (time_t)-1 ) {
asctime_s( buff, sizeof(buff), &when );
printf( "In %d days the time will be %s\n", days, buff );
} else
perror( "mktime failed" );
}
Örnek çıktı
Current time is Fri Apr 25 13:34:07 2003
In 20 days the time will be Thu May 15 13:34:07 2003
Ayrıca bkz.
Zaman yönetimi
asctime
, _wasctime
gmtime
, _gmtime32
, _gmtime64
localtime
, _localtime32
, _localtime64
_mkgmtime
, _mkgmtime32
, _mkgmtime64
time
, _time32
, _time64