Aracılığıyla paylaş


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_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 bulunursatimeptr, -__time64_t1 türüne dönüştürme döndürür.

Açıklamalar

mktimeve _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_wdaytimeptr ö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_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_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_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 gmtimeasctimeişaret edersetimeptr, 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 EINVALayarlanı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