• 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++

+1 głos
1,039 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,360 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 (256,580 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,558 wizyt
pytanie zadane 26 kwietnia 2018 w SQL, bazy danych przez bwl Obywatel (1,530 p.)
0 głosów
0 odpowiedzi 148 wizyt
pytanie zadane 3 maja 2021 w Offtop przez Paweł123 Nałogowiec (33,540 p.)
0 głosów
1 odpowiedź 1,041 wizyt
pytanie zadane 5 września 2019 w Java przez poldeeek Mądrala (5,980 p.)

93,728 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,287 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...