Just nu i M3-nätverket
Gå till innehåll
tp640871

Veckodagar

Rekommendera Poster

Hej, jag jobbar med en kompis på ett spel, men har ett litet problem.

 

Jag har tre variabler som skallas Day, Month och Year.

 

Jag vill att spelet ska kunna lista ut veckodagar genom dessa tre variabler och exportera svaret till en String-variabel som heter Veckodag. Går detta?

 

Visst kan man ha

 

if year = 2004 then if month = 1 then if day = 1 then Veckodag := 'Måndag';

if year = 2004 then if month = 1 then if day = 2 then Veckodag := 'Tisdag';

if year = 2004 then if month = 1 then if day = 3 then Veckodag := 'Onsdag';

o.s.v...

 

Men det kommer ju att ta åratal!

 

Finns det något lätt sätt att göra detta? Det ska fungera för alla dagar i alla månader år 2004 - år 2006, och även fatta att 2004 är ett skottår.

 

Hälsningar

Marcus N

[inlägget ändrat 2004-10-01 16:04:47 av tp640871]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Man brukar ta och räkna ut hur många dagar det har gått från, i ditt fall, 1 januari 2004, och sen tar man antalet dagar modulo 7 och därifrån kan man lätt se vilken veckodag det blir när man vet vilken veckodag den 1 januari 2004 var.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag tror att jag fattar, men du kan inte ge något exempel på detta i kodform? Nu har jag även en integer-variabel som heter TotaltAntalDagar där det alltid står hur många dagar som gått.

 

Tacksam för ett kod-exempel!

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Nu har jag aldrig programmerat i Delphi och skall ni kunna få ihop ett spel borde väl inte det här vara så svårt. Men här är lite C-lik pseudo-kod

 

TotaltAntalDagar = 0
for (i := 2004; i < Year; i = i + 1)
 for (j := 1; j < 12; j = j + 1)
   if i == Year and j == Month    // We reached the wanted year and month
     TotaltAntalDagar = TotaltAntalDagar + Day
      break    // End both for-loops we are finished
   // else add number of days in Month to TotaltAntalDagar
   if j == 2
     if i == 2004
        DaysInMonth = 29
     else DaysInMonth = 28
   else if j = 4 or 6 or 8 or 11
      DaysInMonth = 30
   else DaysInMonth = 31
   TotaltAntalDagar = TotaltAntalDagar + DaysInMonth
 end // Continue with next month
end // Continue with next year

// Calculate number of whole weeks
Weeks = TotaltAntalDagar / 7        // Obs, heltalsdivision
// And how many days in the last week
Weekday = TotaltAntalDagar - (Weeks * 7)

Och nu får ni räkna om ett tal som är mellan 0 och 6 till rätt veckodag på alldeles egen hand, typ liknande ert första inlägg ovan.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Kolla gärna på Delphis inbygda Date/Time rutiner....

 

Ditt problem kan lösas på 2 rader...

 

Date:=EncodeDate(Year, Month, Day); //Ta reda på datumet i TDateTime-format

Veckodag:=DayOfWeek(Date); //Ta reda på vilken dag i veckan

 

//Andreas

 

[inlägget ändrat 2004-10-06 13:50:21 av RedOctober]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...