C++'ta saat ve tarih işlemleri

Rebellion_47

Picopat
Katılım
30 Ağustos 2020
Mesajlar
833
Çözümler
7
İnternet'ten araştırdım ama hiçbir şey anlamadım. Bilen birileri varsa yardımcı olabilir mi?
 
Son düzenleyen: Moderatör:
C++ standart kitaplığı uygun bir tarih türü sağlamaz. C++ c'den tarih ve saat manipülasyonu için yapı ve işlevleri devralır. Tarih ve saatle ilgili işlevlere ve yapılara erişmek için C++ programınıza <ctime> üstbilgi dosyasını eklemeniz gerekir.

Zamanile ilgili dört tür vardır: clock_t, time_t, size_tve tm. Clock_t, size_t ve time_t türleri, sistem saatini ve tarihini bir tür tamsayı olarak temsil etme yeteneğine sahiptir.

C++ Date and Time - Tutorialspoint

İşini görebilir.
 
Son düzenleyen: Moderatör:
Artı -1 Eksi
kral yalnızca saati ve dakikayı almam lazım.

Struct yapısı olmadan saati ve dakikayı almak istiyorsun.


Buradan bakınca sana direkt olarak dakikayı ve saati veren bir fonksiyon yok. Localtime'ı alıp string manipulasyonu yapabilirsin. Parçalayıp saati ve dakikayı bulabilirsin yani. Biraz dene bulamazsan birlikte bakalım.
 
Çok iyi anlatabildiğimi düşünmüyorum ama umarım anlayabilirsiniz... Bu kod aslında girilen UNIX saatini dönüştürür, ben şu anki UNIX saati olan "time(NULL)'u" verdim. Ayrıca bu kod ile tarih saat bilgisinin nasıl gösterileceğini de düzenleyebilirsiniz.

C++:
   struct tm UTCTime; /* struct tm, tarih ve saati tutan bir yapıdır. */

   char buffer[80]; /*Bu buffer'a tarih ve saat bilgisi işlenecektir.*/
   UTCTime = *localtime(time(NULL)); /* Şu anki UNIX saatini (time(NULL)) tm yapısına işletiriz. */
   strftime(buffer, strlen(buffer), "%d-%m-%Y %H:%M:%S" /*Gün-ay-yıl saat:dakika:saniye şeklinde buffer'a kopyalar.*/, &UTCTime);

Bu daha da kısa versiyonu, ama bunda sistem bildiği gibi gösterir tarih ve saati:

C++:
   time_t su_anki_saat = time(NULL);

   // string'e dönüştür
   char* cevrilmis = ctime(&su_anki_saat);
    std::cout<<"Cevrilmis saat : "<<cevrilmis<<std::endl;
 
Son düzenleme:
kral yalnızca saati ve dakikayı almam lazım. İnternet'teki örneklerde struct yapısını falan da işe dahil etmişler. Karmaşık geldi bana yapmayı denedim ama olmadı.
Standart C++
C++:
#include <iostream>
#include <ctime>
#include <conio.h>
const std::string currentDateTime() {
    time_t     now = time(0);
    struct tm  tstruct;
    char       buf[80];
#pragma warning(disable: 4996)
    tstruct = *localtime(&now);
#pragma warning(default: 4996) /* Restore default */
    strftime(buf, sizeof(buf), "%H:%M:%S %d-%m-%Y", &tstruct);

    return buf;
}


int main(void)
{
    std::cout << "Time = " << currentDateTime();

    getch();
    return 0;
}

Eğer sadece saat isterseniz :
C++:
 strftime(buf, sizeof(buf), "%%H:%M:%S", &tstruct);

Eğer sadece tarih isterseniz
C++:
 strftime(buf, sizeof(buf), "%d-%m-%Y", &tstruct);

Saat ve tarih arasında ki noktalana işraetlerini de değiştirebilirsiniz
C++:
 strftime(buf, sizeof(buf), "%H.%M.%S %d.%m.%Y", &tstruct);


Eğer C++ .NET Framework ile çalışıyorsanız:
C++:
#include <iostream>
#include <conio.h>
#include <msclr/marshal_cppstd.h>
#include <Windows.h>
using namespace System;


int main(array<String^>^ args)
{
    DateTime datetime = DateTime::Now;
    String^ temp = datetime.ToString();
    std::string str = msclr::interop::marshal_as<std::string>(temp);
   
    std::cout << str;

    getch();
    return 0;
}


Not : İlk kodda ki #pragma visual studio uyarıları içindir.
 
Son düzenleme:
Çok iyi anlatabildiğimi düşünmüyorum ama umarım anlayabilirsiniz... Bu kod aslında girilen UNIX saatini dönüştürür, ben şu anki UNIX saati olan "time(NULL)'u" verdim. Ayrıca bu kod ile tarih saat bilgisinin nasıl gösterileceğini de düzenleyebilirsiniz.

C++:
   struct tm UTCTime; /* struct tm, tarih ve saati tutan bir yapıdır. */

   char buffer[80]; /*Bu buffer'a tarih ve saat bilgisi işlenecektir.*/
   UTCTime = *localtime(time(NULL)); /* Şu anki UNIX saatini (time(NULL)) tm yapısına işletiriz. */
   strftime(buffer, strlen(buffer), "%d-%m-%Y %H:%M:%S" /*Gün-ay-yıl saat:dakika:saniye şeklinde buffer'a kopyalar.*/, &UTCTime);

Bu daha da kısa versiyonu, ama bunda sistem bildiği gibi gösterir tarih ve saati:

C++:
   time_t su_anki_saat = time(NULL);

   // string'e dönüştür
   char* cevrilmis = ctime(&su_anki_saat);
    std::cout<<"Cevrilmis saat : "<<cevrilmis<<std::endl;
kral "char*" nedir? Pointerlara hakimim ama daha önce önünde yıldız olan bir yapı görmemiştim. Bu yapının bir adı var mı?
 

Yeni konular

Geri
Yukarı