Datum in KW umrechnen
-
Ich habe ein Amerikanisches Datum.
z.B 12/12/2006 und möchte dies nun in die Kalenderwoche umrechnen. Also z.B KW 50. kann mir jemand sagen, wie ich dies lösen kann?Vielen Dank und frohe Festtage!
-
Auf Anhieb fällt mir nur CString::Format() bzw. strftime() ein - die Formatkennung %U gibt die Kalendarwoche aus. Oder du holst dir den Tag des Jahres (tm::tm_yday) und dividierst diesen Wert durch 7.
-
Da hab ich mal was brauchbares im Netz gefunden (kann aber leider die Quelle nicht mehr angeben):
// Datum_Zeit.h : Schnittstelle zu Methoden zum Handling mit Datum und Zeit // //Grundlagen //Berechnen, ob ein bestimmtes Jahr ein Schaltjahr ist: bool istEinSchaltjahr(const UINT uJahr); //Bestimmung der Anzahl Tage pro Monat: short getAnzahlTageImMonat(const UINT uMonat, const UINT uJahr); //Die Anzahl der Tage eines Jahres: short getAnzahlTageImJahr(const UINT uJahr); //Bestimmung des Wochentags für ein Datum: short getWochentag(const UINT uTag, const UINT uMonat, const UINT uJahr); //Der wievielte Tag des Jahres ist ein bestimmtes Datum : short getTagDesJahres(const UINT uTag, const UINT uMonat, const UINT uJahr); //Kalenderwoche und Ostern //Die Kalenderwoche wird nach der Industrienorm DIN 1355 berechnet: short getKalenderwoche(const UINT uTag, const UINT uMonat, const UINT uJahr); //Auch der Ostersonntag kann mathematisch berechnet werden, und damit auch alle anderen Feiertage, die um den Ostersonntag drumherum liegen: void getOsterdatum(const UINT uJahr, UINT & uTag, UINT & uMonat); //Zeitdifferenzen long ZeitDifferenzInJahren(const SYSTEMTIME & Startzeit, const SYSTEMTIME & Endezeit); long ZeitDifferenzInTagen(const SYSTEMTIME & Startzeit, const SYSTEMTIME & Endezeit);
// Datum_Zeit.cpp : Implementierung von Methoden zum Handling mit Datum und Zeit // #include "stdafx.h" #include "Datum_Zeit.h" //Berechnen, ob ein bestimmtes Jahr ein Schaltjahr ist: bool istEinSchaltjahr(const UINT uJahr) { // Die Regel lautet: Alles, was durch 4 teilbar ist, ist ein Schaltjahr. // Es sei denn, das Jahr ist durch 100 teilbar, dann ist es keins. // Aber wenn es durch 400 teilbar ist, ist es doch wieder eins. if ((uJahr % 400) == 0) return true; else if ((uJahr % 100) == 0) return false; else if ((uJahr % 4) == 0) return true; return false; } //Bestimmung der Anzahl Tage pro Monat: short getAnzahlTageImMonat(const UINT uMonat, const UINT uJahr) { // ungült,Jan,Feb,Mrz,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez int arrTageImMonat[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (uMonat == 2) { // Februar: Schaltjahr unterscheiden if (istEinSchaltjahr(uJahr)) return 29; else return 28; } if ((uMonat >= 1) && (uMonat <= 12)) return arrTageImMonat[uMonat]; else { _ASSERT(0); // ungültiger Monat ! return 0; } } //Die Anzahl der Tage eines Jahres: short getAnzahlTageImJahr(const UINT uJahr) { return (istEinSchaltjahr(uJahr)) ? 366 : 365; } //Bestimmung des Wochentags für ein Datum: short getWochentag(const UINT uTag, const UINT uMonat, const UINT uJahr) { // ungült Jan Feb Mrz Apr Mai Jun Jul Aug Sep Okt Nov Dez BYTE arrMonatsOffset[13] = { 0, 1, 4, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5}; BYTE cbJahrhundertOffset = 0; _ASSERT(uTag > 0); _ASSERT(uTag <= 31); _ASSERT(uMonat > 0); _ASSERT(uMonat <= 12); _ASSERT(uJahr >= 1600); // Wir können erst ab 1. März 1600 rechnen. // Monat / Tag - Plausi prüfen: if ( (uTag > 31) || (uMonat > 12) || (uMonat == 0) || (uTag == 0) || (uJahr < 1600)) return -1; if ((uJahr == 1600) && (uMonat <= 2)) return -1; // Jahrhundertoffset berechnen: if ( (uJahr < 1700) || ((uJahr == 1700) && (uMonat <= 2)) ) { // 01.03.1600 - 28.02.1700 cbJahrhundertOffset = 6; } else if ( (uJahr < 1800) || ((uJahr == 1800) && (uMonat <= 2)) ) { // 01.03.1700 - 28.02.1800 cbJahrhundertOffset = 4; } else if ( (uJahr < 1900) || ((uJahr == 1900) && (uMonat <= 2)) ) { // 01.03.1800 - 28.02.1900 cbJahrhundertOffset = 2; } else if ( (uJahr < 2000) || ((uJahr == 2000) && (uMonat <= 2)) ) { // 01.03.1900 - 29.02.2000 cbJahrhundertOffset = 0; } else if ( (uJahr < 2100) || ((uJahr == 2100) && (uMonat <= 2)) ) { // 01.03.2000 - 28.02.2100 cbJahrhundertOffset = 6; } else if ( (uJahr < 2200) || ((uJahr == 2200) && (uMonat <= 2)) ) { // 01.03.2100 - 28.02.2200 cbJahrhundertOffset = 4; } else if ( (uJahr < 2300) || ((uJahr == 2300) && (uMonat <= 2)) ) { // 01.03.2200 - 28.02.2300 cbJahrhundertOffset = 2; } else if ( (uJahr < 2400) || ((uJahr == 2400) && (uMonat <= 2)) ) { // 01.03.2400 - 29.02.2400 cbJahrhundertOffset = 0; } UINT uLocalJahr = uJahr; if (uMonat <= 2) uLocalJahr--; UINT uJmod100 = uLocalJahr % 100; short nErgebnis = (uTag + uJmod100 + (uJmod100 / 4) + arrMonatsOffset[uMonat] + cbJahrhundertOffset) % 7; // Ergebnis: // 0 = Sonntag // 1 = Montag // 2 = Dienstag // 3 = Mittwoch // 4 = Donnerstag // 5 = Freitag // 6 = Samstag return nErgebnis; } //Der wievielte Tag des Jahres ist ein bestimmtes Datum : short getTagDesJahres(const UINT uTag, const UINT uMonat, const UINT uJahr) { // Der wievielte Tag des Jahres ist dieser Tag if ((uMonat == 0) || (uMonat > 12)) { _ASSERT(0); return -1; } UINT uLokalTag = uTag; UINT uLokalMonat = uMonat; while (uLokalMonat > 1) { uLokalMonat--; uLokalTag += getAnzahlTageImMonat(uLokalMonat, uJahr); } return uLokalTag; } //Die Kalenderwoche wird nach der Industrienorm DIN 1355 berechnet: short getKalenderwoche(const UINT uTag, const UINT uMonat, const UINT uJahr) { // Berechnung erfolgt analog DIN 1355, welche besagt: // Der erste Donnerstag im neuen Jahr liegt immer in der KW 1. // "Woche" ist dabei definiert als [Mo, ..., So]. short nTagDesJahres = getTagDesJahres(uTag, uMonat, uJahr); // Berechnen des Wochentags des 1. Januar: short nWochentag1Jan = getWochentag(1, 1, uJahr) - 1; // Sonderfälle Freitag und Samstag if (nWochentag1Jan >= 4) nWochentag1Jan -= 7; // Sonderfälle "Jahresanfang mit KW - Nummer aus dem Vorjahr" // Danke an Frank Hamann von Delphi für den Hinweis :-) if ( (nTagDesJahres + nWochentag1Jan) <= 0) return getKalenderwoche(31, 12, uJahr - 1); short nKalenderWoche = ((nTagDesJahres - 1 + nWochentag1Jan) / 7) + 1; _ASSERT(nKalenderWoche >= 1); _ASSERT(nKalenderWoche <= 53); // 53 Kalenderwochen hat grundsätzlich nur ein Jahr, // welches mit einem Donnerstag anfängt ! // Andernfalls ist diese KW schon die KW1 des Folgejahres. if ((nKalenderWoche == 53) && (nWochentag1Jan != 3)) return 1; return nKalenderWoche; } //Auch der Ostersonntag kann mathematisch berechnet werden, und damit auch alle anderen Feiertage, die um den Ostersonntag drumherum liegen: void getOsterdatum(const UINT uJahr, UINT & uTag, UINT & uMonat) { // Berechnet für ein beliebiges Jahr das Osterdatum. // Quelle des Gauss - Algorithmus: Stefan Gerth, // "Die Gauß'sche Osterregel", Nürnberg, Februar 2003. // http://krapfen.org/docs/Facharbeit/ostern.pdf UINT a = uJahr % 19; UINT b = uJahr % 4; UINT c = uJahr % 7; int k = uJahr / 100; int q = k / 4; int p = ((8 * k) + 13) / 25; UINT Egz = (38 - (k - q) + p) % 30; // Die Jahrhundertepakte UINT M = (53 - Egz) % 30; UINT N = (4 + k - q) % 7; UINT d = ((19 * a) + M) % 30; UINT e = ((2 * b) + (4 * c) + (6 * d) + N) % 7; // Ausrechnen des Ostertermins: if ((22 + d + e) <= 31) { uTag = 22 + d + e; uMonat = 3; } else { uTag = d + e - 9; uMonat = 4; // Zwei Ausnahmen berücksichtigen: if (uTag == 26) uTag = 19; else if ((uTag == 25) && (d == 28) && (a > 10)) uTag = 18; } // Offsets für andere Feiertage: // Schwerdonnerstag / Weiberfastnacht -52 // Rosenmontag -48 // Fastnachtsdienstag -47 // Aschermittwoch -46 // Gründonnerstag -3 // Karfreitag -2 // Ostersonntag 0 // Ostermontag +1 // Christi Himmelfahrt +39 // Pfingstsonntag +49 // Pfingstmontag +50 // Fronleichnam +60 // Mariä Himmelfahrt ist stets am 15. August (Danke an Michael Plugge!) } //Mit der Windows - API - Funktion GetSystemTime() kann man sich die exakte Uhrzeit mitsamt Datum beschaffen, bis auf die Millisekunde genau. //Leider gibt es keine Unterstützung für die Differenzbildung zweier solcher ermittelten Zeiten, daher gebe ich hier zwei Beispiele, //wie dies programmiert werden kann. Dies funktioniert analog auch für GetLocalTime(), die Funktion, die auch noch Sommer- und Winterzeit berücksichtigt, //und ebenfalls mit der SYSTEMTIME - Struktur arbeitet. long ZeitDifferenzInJahren(const SYSTEMTIME & Startzeit, const SYSTEMTIME & Endezeit) //const { if (Endezeit.wMonth > Startzeit.wMonth) return Endezeit.wYear - Startzeit.wYear; if (Endezeit.wMonth < Startzeit.wMonth) return Endezeit.wYear - Startzeit.wYear - 1; // Monate sind identisch. if (Endezeit.wDay > Startzeit.wDay) return Endezeit.wYear - Startzeit.wYear; if (Endezeit.wDay < Startzeit.wDay) return Endezeit.wYear - Startzeit.wYear - 1; // Tag ist bei beiden identisch. if (Endezeit.wHour > Startzeit.wHour) return Endezeit.wYear - Startzeit.wYear; if (Endezeit.wHour < Startzeit.wHour) return Endezeit.wYear - Startzeit.wYear - 1; // Stunde ist identisch. if (Endezeit.wMinute > Startzeit.wMinute) return Endezeit.wYear - Startzeit.wYear; if (Endezeit.wMinute < Startzeit.wMinute) return Endezeit.wYear - Startzeit.wYear - 1; if (Endezeit.wSecond > Startzeit.wSecond) return Endezeit.wYear - Startzeit.wYear; if (Endezeit.wSecond < Startzeit.wSecond) return Endezeit.wYear - Startzeit.wYear - 1; if (Endezeit.wMilliseconds >= Startzeit.wMilliseconds) return Endezeit.wYear - Startzeit.wYear; else return Endezeit.wYear - Startzeit.wYear - 1; } ////////////////////////////////////////////////////////////////////////////// // Die Zeitdifferenz in Monaten läßt sich nicht exakt ausrechnen, // weil ein Monat nicht immer gleich lang ist. Beispiel: // Zwischen dem 28.2. und dem 28.3. liegen nur 28 Tage. // Ist das schon ein Monat (28. bis 28.) ???? // Der März ist erst am 31.3. zu Ende ! Ist das ein Monat (28.2. - 31.3.) ???? ////////////////////////////////////////////////////////////////////////////// long ZeitDifferenzInTagen(const SYSTEMTIME & Startzeit, const SYSTEMTIME & Endezeit) { // Ist die Ende-Uhrzeit auch hinter der Startuhrzeit ? Das ist der Normalfall. // Andernfalls müssen wir nachher noch eins abziehen! long lAbzug = 0; if ( (Endezeit.wHour < Startzeit.wHour) || ((Endezeit.wHour == Startzeit.wHour) && (Endezeit.wMinute < Startzeit.wMinute)) || ((Endezeit.wHour == Startzeit.wHour) && (Endezeit.wMinute == Startzeit.wMinute) && (Endezeit.wSecond < Startzeit.wSecond)) || ((Endezeit.wHour == Startzeit.wHour) && (Endezeit.wMinute == Startzeit.wMinute) && (Endezeit.wSecond == Startzeit.wSecond) && (Endezeit.wMilliseconds < Startzeit.wMilliseconds)) ) { lAbzug = 1; } // Im gleichen Jahr ? Dann nutzen wir "getTagDesJahres": if (Endezeit.wYear == Startzeit.wYear) return getTagDesJahres(Endezeit.wDay, Endezeit.wMonth, Endezeit.wYear) - getTagDesJahres(Startzeit.wDay, Startzeit.wMonth, Startzeit.wYear) - lAbzug; else if (Endezeit.wYear > Startzeit.wYear) { // Wir starten mit der Anzahl Tage im Endejahr: long lErgebnis = getTagDesJahres(Endezeit.wDay, Endezeit.wMonth, Endezeit.wYear) - lAbzug; UINT uJahr = Endezeit.wYear - 1; // Jetzt summieren wir alle dazwischenliegenden Jahre: while (uJahr > Startzeit.wYear) { lErgebnis += getAnzahlTageImJahr(uJahr); uJahr--; } // und addieren schließlich noch die Anzahl der Tage aus dem Start - Jahr: lErgebnis += (getAnzahlTageImJahr(Startzeit.wYear) - getTagDesJahres(Startzeit.wDay, Startzeit.wMonth, Startzeit.wYear)); return lErgebnis; } else return -1; // Die Endezeit liegt vor der Startzeit ! }
Musst Dir das passende raussuchen. :xmas2: :xmas1:
-
Din1355 ist aber nur ein Fall:
Da hat jedes Land seine Spezialitäten siehe:
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IFIRSTDAYOFWEEK,m_iFirstDayOfWeek); GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IFIRSTWEEKOFYEAR,m_iFirstWeekOfYear);
Ich verwende COleDateTime basierend daruf gibt es hier den entsprechenden Code:
http://groups.google.de/group/microsoft.public.de.vc/browse_frm/thread/6c8ac313341fc8ec/fae52b5758f4231aint GetWeekOfYear(DATE date) { // Convert COleDateTime datetime(date); CLocale &rMyLocale = CLocale::Instance(); int iWeekOfYear = 0; // dayOfWeek 0==Mon, 1==Tue, ... (respectively first day of week etc.) int iYear = datetime.GetYear(); COleDateTime dDateFirstJanuary(iYear,1,1,0,0,0); int iDayOfWeek = (dDateFirstJanuary.GetDayOfWeek()+5+rMyLocale.m_iFirstDayOfWeek)%7; /* Select mode * 0 Week containing 1/1 is the first week of that year. * 1 First full week following 1/1 is the first week of that year. * 2 First week containing at least four days is the first week of that year. */ switch (rMyLocale.m_iFirstWeekOfYear) { case 0: { // Week containing 1/1 is the first week of that year. // check if this week reaches into the next year dDateFirstJanuary = COleDateTime(iYear+1,1,1,0,0,0); // Get start of week iDayOfWeek = (datetime.GetDayOfWeek()+5+rMyLocale.m_iFirstDayOfWeek)%7; COleDateTime dStartOfWeek = datetime-COleDateTimeSpan(iDayOfWeek,0,0,0); // If this week spans over to 1/1 this is week 1 if (dStartOfWeek+COleDateTimeSpan(6,0,0,0)>=dDateFirstJanuary) // we are in the last week of the year that spans over 1/1 iWeekOfYear = 1; else { // Get week day of 1/1 dDateFirstJanuary = COleDateTime(iYear,1,1,0,0,0); iDayOfWeek = (dDateFirstJanuary.GetDayOfWeek()+5+rMyLocale.m_iFirstDayOfWeek)%7; // Just count from 1/1 iWeekOfYear = (int)(((datetime-dDateFirstJanuary).GetDays()+iDayOfWeek) / 7) + 1; } } break; case 1: { // First full week following 1/1 is the first week of that year. /* If the 1.1 is the start of the week everything is ok * else we need the next week is the correct result */ iWeekOfYear = (int)(((datetime-dDateFirstJanuary).GetDays()+iDayOfWeek) / 7) + (iDayOfWeek==0 ? 1:0); /* If we are in week 0 we are in the first not full week * calculate from the last year */ if (iWeekOfYear==0) { /* Special case: we are in the week of 1.1 but 1.1. is not on the * start of week. Calculate based on the last year */ dDateFirstJanuary = COleDateTime(iYear-1,1,1,0,0,0); iDayOfWeek = (dDateFirstJanuary.GetDayOfWeek()+5+rMyLocale.m_iFirstDayOfWeek)%7; /* and we correct this in the same we we done this before but the result * is now 52 or 53 and not 0 */ iWeekOfYear = (int)(((datetime-dDateFirstJanuary).GetDays()+iDayOfWeek) / 7) + (iDayOfWeek<=3 ? 1:0); } } break; case 2: { // First week containing at least four days is the first week of that year. /* Each year can start with any day of the week. But our * weeks always start with monday. So we add the day of week * before calculation of the final week of year. * Rule: is the 1.1 a Mo,Tu,We,Th than the week starts on the 1.1 with * week==1, else a week later, so we add one for all those days if * day is less <=3 Mo,Tu,We,Th. Otherwise 1.1 is in the last week of the * previous year */ iWeekOfYear = (int)(((datetime-dDateFirstJanuary).GetDays()+iDayOfWeek) / 7) + (iDayOfWeek<=3 ? 1:0); // Sonderfälle kontrollieren if (iWeekOfYear==0) { /* special case week 0. We got a day before the 1.1, 2.1 or 3.1, were the * 1.1. is not a Mo, Tu, We, Th. So the week 1 does not start with the 1.1. * So we calculate the week according to the 1.1 of the year befor *------------------------------------------------------------------*/ dDateFirstJanuary = COleDateTime(iYear-1,1,1,0,0,0); iDayOfWeek = (dDateFirstJanuary.GetDayOfWeek()+5+rMyLocale.m_iFirstDayOfWeek)%7; /* and we correct this in the same we we done this before but the result * is now 52 or 53 and not 0 */ iWeekOfYear = (int)(((datetime-dDateFirstJanuary).GetDays()+iDayOfWeek) / 7) + (iDayOfWeek<=3 ? 1:0); } else if (iWeekOfYear==53) { /* special case week 53. Either we got the correct week 53 or we just got the * week 1 of the next year. So ist the 1.1.(year+1) also a Mo, Tu, We, Th than * we alrady have the week 1, otherwise week 53 is correct *------------------------------------------------------------------*/ dDateFirstJanuary = COleDateTime(iYear+1,1,1,0,0,0); iDayOfWeek = (dDateFirstJanuary.GetDayOfWeek()+5+rMyLocale.m_iFirstDayOfWeek)%7; // 1.1. in week 1 or week 53? iWeekOfYear = iDayOfWeek<=3 ? 1:53; } } break; default: ASSERT(FALSE); break; } // return result return iWeekOfYear; }
-
Die Kalenderwoche auszurechnen ist nicht so einfach möglich, da es für jedes Land eine eigene Definition der "Kalenderwoche" gibt...
Aus diesem Grunde gibt es GetLocaleInfo mit LOCALE_IFIRSTWEEKOFYEAR und LOCALE_IFIRSTDAYOFWEEK:
http://blogs.msdn.com/michkap/archive/2005/11/14/492249.aspx
http://msdn.microsoft.com/library/en-us/intl/nls_34rz.asp
http://msdn.microsoft.com/library/en-us/intl/nls_8rse.aspSiehe auch:
http://en.wikipedia.org/wiki/ISO_week_dateADD: Martin war wieder schneller
@AndyDD: Was hat Dein Posting mit dem Problem zu tun?
-
@Martin Richter: Stimmt, das ist länderspezifisch. Bin mal von Deutschland ausgegangen, da nichts anderes angegeben wurde.
Ansonsten gilt (für Deutschland) die Regel: "Der erste Donnerstag im neuen Jahr liegt immer in der KW 1." Weiß nicht, ob Microsoft das anders sieht. Was ich damit sagen will: ich weiß nicht welche Berechnungsmodelle bei CString::Format() bzw. strftime() dahinterstecken.
-
Jochen Kalmbach schrieb:
@AndyDD: Was hat Dein Posting mit dem Problem zu tun?
Ich berechne die KW in meinen Programmen damit und hatte da noch nie Fehler. Damit könnte man das zweite Problem (also die Berechnung) lösen. Die Berechnung der KW steht in der Mitte. Da darin der Bezug auf weitere Funktionen gemacht wird hab ich halt alles gepostet. Die Formatierung des Datums muss natürlich noch gemacht werden (erstes Problem).
-
Die CRT nimmt den entsprechenden Sonntag als Wochenbegin. Din Normen sind den Amerikanern seit jeher unbekannt. COleDateTime::Format verwendet srtftime!
Du hast den CRT Code. Kein Problem da hinein zu sehen!
-
Martin Richter schrieb:
Die CRT nimmt den entsprechenden Sonntag als Wochenbegin. Din Normen sind den Amerikanern seit jeher unbekannt. COleDateTime::Format verwendet srtftime!
Du hast den CRT Code. Kein Problem da hinein zu sehen!
Also doch selber berechnen. Ich hatte das ja schon vermutet. Außerdem muss die Woche mit Montag anfangen, da sonst der Donnerstag nicht in der Mitte der Woche liegt. Neben der DIN 1355 kann man auch mal in die ISO/R 2015-1971 reinschauen.
-
Mein Algorithmus berücksichtigt alle Fälle des Gregorianischen Kalenders inkl. aller Nationalen Spezialitäten und Kombinationen.
-
Ich habe eine Frage zu Martin Richter's Code!
Wie übergebe ich dort das Datum?
Es kommen diverse Fehlermeldungen wenn ich den Code welcher du gepostet hast in mein Projekt einbinde! Brauche ich sonst noch etwas?
-
1. Diese Funktion basiert auf COleDateTime.
2. Diese Funktion ist aus meinem Produktivcode kopiert. Dort werden die Locale Daten in einem Singleton gehalten.
m_iFirstWeekOfYear wird durch
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IFIRSTWEEKOFYEAR,m_iFirstWeekOfYear);
m_iFirstDayOfWeek wird durch
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IFIRSTDAYOFWEEK,m_iFirstDayOfWeek);
Ermittelt.Es ist kein echter CPP-Code (Copy-Paste-Programmer-Code) :xmas1:
-
Ach so...
Kein Wunder funktioniert dieser nicht(Gibt es Fehler)
Werde mal versuchen, das Ding zum Laufen zu bringen!
Aber wie übergebe ich aber den "DATE date"? Anders gefragt, wie schreibe ich das Datum in einen DATE-Datentyp?Vielen Dank für die vielen Antworten!
Frohe Festtage!
-
Lesen.... COleDateTime ist ein guter Wrapper für DATE Datentypen!
-
Hi ich bin bereits ziemlich weit gekommen! Nur noch 27 Fehler im Code
Habe aber ein kleines Problem mit dieser Zeile:CLocale &rMyLocale
Ich habe die Datei: "<locale.h>" eingefügt im Header, leider kennt er CLocale immer noch nicht! Ich benutze Visual Studio 2003, kann mir jemand sagen was ich noch includen muss, damit er die Definition kennt?