?
Hab den Code sogar noch in c++ noch gehabt.Ist allerdings auch umständlich gelöst(Tage werden einzeln gezählt ...).
Müsste mir mal ne schnellere Lösung einfallen lassen.
Die Separatorfunktion müsstest du, wenn du keine Trennzeichen im Datum hast eben mit substr ersetzen.
#include <conio.h>
#include <iostream.h>
//Funktion Separator dient zum Auslesen der Tage,Monate,Jahre aus dem string
string Separator(string sSourceText,string sSeparator,int iPos);
int Anzahltage(string Anfangsdatum,string Enddatum);
void main()
{
string anfang,ende;
cout << "Anfangsdatum(tt.mm.jjjj):";
cin >> anfang;
cout << "Enddatum(tt.mm.jjjj):";
cin >> ende;
cout << "\nDas sind " << Anzahltage(anfang,ende) << " Tage.";
getch();
}
int Anzahltage(string Anfangsdatum,string Enddatum)
{
int idatum[2][3],ianztag=0,imon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
string sdatum[2]={Anfangsdatum,Enddatum};
//string in Integerarray übernehmen
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
idatum[i][j]=atoi(Separator(sdatum[i],".",j+1).c_str());
}
}
//Solange wie Enddatum ungleich Anfangsdatum
while(idatum[0][0]!=idatum[1][0]||idatum[0][1]!=idatum[1][1]||idatum[0][2]!=idatum[1][2])
{
ianztag++;//Zähler Tage
idatum[1][0]--;//Enddatum Tage runterzählen
if(!idatum[1][0])// Wenn Tag < 1
{
idatum[1][1]--;// Monat runterzählen
if(!idatum[1][1])// Wenn Monat < 1
{
idatum[1][1]=12; //Monat=12
idatum[1][2]--; //Jahr runterzählen
}
idatum[1][0]=imon[(idatum[1][1]-1)];// Tage des Vormonats übernehmen
//Wenn Schaltjahr Februar 29 Tage
if(idatum[1][1]==2)if((idatum[1][2]%4==0&&idatum[1][2]%100!=0)||idatum[1][2]%400==0)idatum[1][0]++;
}
}
return ianztag;//Anzahl Tage zurück
}
string Separator(string sSourceText,string sSeparator,int iPos)
{
int x;
while(iPos--) x=1+sSourceText.find(sSeparator.c_str(),x);
return sSourceText.substr(x,sSourceText.find(sSeparator.c_str(),x)-x);
}