Aracılığıyla paylaş


mktime, _mktime32, _mktime64

Yerel saati takvim değerine dönüştürün.

Sözdizimi

time_t mktime( // See note in remarks section about linkage
   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_tbir 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_tiçin -1 atama döndürür.

_mktime6423:59:59, 31 Aralık 3000, UTC tarihinden sonraki bir tarihe başvuruda bulunursa__time64_t, -timeptr1 türüne dönüştürme döndürür.

Açıklamalar

mktimeve _mktime32 işlevleri, _mktime64 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_wday bileşenlerinin tm_ydaytimeptr ö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 _mktime64olan bir satır içi işlevdir ve bu durumda ile eşdeğerdir_USE_32BIT_TIME_T._mktime32

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_tneden olabilir. Örneğin, UTC'den iki saat önce olan Mısır'ın Kahire şehrini kullanıyorsanız, ilk olarak içinde belirttiğiniz timeptrtarihten 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_wday değerlerini tm_yday 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_mon belirlenene kadar tm_year 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 timeptr bu işlevlerin çeşitlemeleri) için önceki bir çağrı tarafından döndürülen bir tm yapıya asctimegmtimeişaret ederselocaltime, tm_isdst alan doğru değeri içerir.

gmtime ve localtime (ve _gmtime32, _gmtime64, _localtime32ve _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_mktime64sağ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 errnoayarlanırEINVAL.

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.

Uyarı

Windows SDK sürüm 10.0.26100.6901 ve Visual Studio 2026 veya sonraki sürümleri birlikte kullandığınızda artık mktime (iç bağlantı) değildir static inline . Bunun yerine, bu inline (dış bağlantı).
CRT üst bilgilerini eklemeden önce önceki davranışa #define _STATIC_INLINE_UCRT_FUNCTIONS=1 dönmek için. Varsayılan olarak _STATIC_INLINE_UCRT_FUNCTIONS 0 olarak ayarlanır.
Bu değişiklik C++ standardına UCRT uyumluluğunu artırır ve C++ modülleriyle uyumluluğu artırır.

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