• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dodawanie dni do aktualnej daty c++

Object Storage Arubacloud
+1 głos
543 wizyt
pytanie zadane 27 grudnia 2021 w C i C++ przez Szaradek Obywatel (1,340 p.)

Mam pytanie odnośnie dodawania dni do aktualnej daty. Pisze program, który będzie przypominał o nauce, tylko mam problem z dodawaniem dni. Otóż korzystam z biblioteki ctime (kod poniżej) i co w przypadku gdy chce przypomnieć o nauce za 7 dni licząc od dziś. Dzisiaj mamy 27.12 i gdy dodaje 7 dni do daty to wynikiem jest 34.12. Jest jakiś sposób by zautomatyzować ten proces, czy jednak trzeba uwzględnić to samemu warunkami?

#include <ctime>
#include <iostream>

using namespace std;

int main()
{
    time_t t=time(0);
    tm* now = localtime(&t);
    cout<< now->tm_mday+7;

    return 0;
}

 

2
komentarz 27 grudnia 2021 przez Oscar Nałogowiec (29,290 p.)

Obliczenia wygodniej przeprowadzać na zmiennych typu time_t. Jest to po prostu liczba sekund, można bezpiecznie dodać liczbę równą liczbie sekund w tygodniu. Trochę to duża wartość, ale można policzyć 7 * 24 * 3600.

    time_t t=time(0);
    t += (7 * 24 * 3600);
    tm* nextweek = localtime(&t);

 

1 odpowiedź

0 głosów
odpowiedź 28 grudnia 2021 przez VBService Ekspert (252,740 p.)
edycja 28 grudnia 2021 przez VBService

Tu na tym forum "znalazła" się ciekawa w swej prostocie funkcja (nawiązująca do tego co napisał @Oscarwink

C++ add days to date

 

inline time_t addDays(int days)
{
    return time(0)+86400*days;
}
time_t printNewDate(int days)
{
    time_t newtime = addDays(days);
    std::cout << asctime(localtime(&newtime));
    return newtime;
}

prosta interpretacja (przykład) w oparciu o powyższy kod  [ on-line ]

#include <iostream>
#include <ctime>
 
using namespace std;

time_t addDays(int days)
{
    return time(NULL) + 86400 * days;
}
void printNewDate(int days)
{
    time_t newtime = addDays(days);
    cout << asctime(localtime(&newtime));
}
 
int main()
{

    // propozycja  @Oscar-a
    time_t t = time(0);
    t += (7 * 24 * 3600);
    tm* nextweek1 = localtime(&t);
    
    t = addDays(7);
    tm* nextweek2 = localtime(&t);
    
    cout << nextweek1->tm_mday << "\n";
    cout << nextweek2->tm_mday << "\n";
    printNewDate(7); cout << endl;

    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 1,281 wizyt
pytanie zadane 26 kwietnia 2018 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
0 odpowiedzi 83 wizyt
pytanie zadane 3 maja 2021 w Offtop przez Paweł123 Nałogowiec (33,500 p.)
0 głosów
1 odpowiedź 561 wizyt
pytanie zadane 5 września 2019 w Java przez poldeeek Mądrala (5,980 p.)

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...