17. november 2005 - 15:19
Der er
18 kommentarer og 1 løsning
Datoer i ugen udfra uge nummer og årstal
Hej, Jeg har et årstal og et uge nummer, og ud fra det skal jeg vide hvilken dato der er i den uge. Hvordan gøres dette i C#?
Annonceindlæg fra Barco
17. november 2005 - 15:22
#1
den havde vi for et par måneder siden mit forslag var: using System; namespace E { public class Util { public static int WeekNumber(int year, int mon, int day) { int a = (14 - mon) / 12; int y = year + 4800 - a; int m = mon + 12*a - 3; int JD = day + (153 * m + 2)/5 + 365*y + y/4 - y/100 + y/400 - 32045; int d4 = (((JD + 31741 - JD % 7) % 146097) % 36524) % 1461; int L = d4 / 1460; int d1 = ((d4 - L) % 365) + L; return d1 / 7 + 1; } } class MainClass { public static void Test(int year, int week) { DateTime dt = new DateTime(year, 1, 1); while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) > 1) { dt = dt.AddDays(1); } while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) < week) { dt = dt.AddDays(1); } while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) == week) { Console.WriteLine(dt.ToString("dd-MMM-yyyy")); dt = dt.AddDays(1); } } public static void Main(string[] args) { Test(2005, 39); Test(2005, 40); } } }
17. november 2005 - 15:26
#2
Ok - set fint ud :) smid et svar
17. november 2005 - 15:27
#3
der var faktisk en som havde en forbedring til den - prøv og søg i de gamle spørgsmål - det var engang i september
17. november 2005 - 15:27
#4
svar
18. november 2005 - 08:25
#5
et dumt spørgsmål. Tager den højde for skudår ?
18. november 2005 - 08:32
#6
ja
18. november 2005 - 08:33
#7
ok gemmer den lige som et bookmark så :)
18. november 2005 - 08:34
#8
men år jeg nu kigger på den måske skal DateTime dt = new DateTime(year, 1, 1); være DateTime dt = new DateTime(year-1, 12, 29); fordi uge 1 kan vel starte i forrige år
18. november 2005 - 08:34
#9
jeg mener at det er + y/4 - y/100 + y/400 som dækker skudår
18. november 2005 - 08:38
#10
nej uge 1 starter i den nye år men uge 53 kan gå ind i det nye år. det gjorde den i 2004/2005.
18. november 2005 - 08:38
#11
iflg min kalender :)
18. november 2005 - 08:59
#12
ja men der er jo andre år
18. november 2005 - 08:59
#13
using System; namespace E { public class Util { public static int WeekNumber(int year, int mon, int day) { int a = (14 - mon) / 12; int y = year + 4800 - a; int m = mon + 12*a - 3; int JD = day + (153 * m + 2)/5 + 365*y + y/4 - y/100 + y/400 - 32045; int d4 = (((JD + 31741 - JD % 7) % 146097) % 36524) % 1461; int L = d4 / 1460; int d1 = ((d4 - L) % 365) + L; return d1 / 7 + 1; } } class MainClass { public static void Test(int year, int week) { Console.WriteLine(year + "/" + week + ":"); DateTime dt = new DateTime(year, 1, 1); while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) > 1) { dt = dt.AddDays(1); } while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) < week) { dt = dt.AddDays(1); } while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) == week) { Console.WriteLine(dt.ToString("dd-MMM-yyyy")); dt = dt.AddDays(1); } } public static void Main(string[] args) { Test(2000, 1); Test(2001, 1); Test(2002, 1); Test(2003, 1); Test(2004, 1); Test(2005, 1); Test(2006, 1); } } } giver: 2000/1: 03-jan-2000 04-jan-2000 05-jan-2000 06-jan-2000 07-jan-2000 08-jan-2000 09-jan-2000 2001/1: 01-jan-2001 02-jan-2001 03-jan-2001 04-jan-2001 05-jan-2001 06-jan-2001 07-jan-2001 2002/1: 01-jan-2002 02-jan-2002 03-jan-2002 04-jan-2002 05-jan-2002 06-jan-2002 2003/1: 01-jan-2003 02-jan-2003 03-jan-2003 04-jan-2003 05-jan-2003 2004/1: 01-jan-2004 02-jan-2004 03-jan-2004 04-jan-2004 2005/1: 03-jan-2005 04-jan-2005 05-jan-2005 06-jan-2005 07-jan-2005 08-jan-2005 09-jan-2005 2006/1: 02-jan-2006 03-jan-2006 04-jan-2006 05-jan-2006 06-jan-2006 07-jan-2006 08-jan-2006
18. november 2005 - 09:00
#14
using System; namespace E { public class Util { public static int WeekNumber(int year, int mon, int day) { int a = (14 - mon) / 12; int y = year + 4800 - a; int m = mon + 12*a - 3; int JD = day + (153 * m + 2)/5 + 365*y + y/4 - y/100 + y/400 - 32045; int d4 = (((JD + 31741 - JD % 7) % 146097) % 36524) % 1461; int L = d4 / 1460; int d1 = ((d4 - L) % 365) + L; return d1 / 7 + 1; } } class MainClass { public static void Test(int year, int week) { Console.WriteLine(year + "/" + week + ":"); DateTime dt = new DateTime(year-1, 12, 29); while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) > 1) { dt = dt.AddDays(1); } while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) < week) { dt = dt.AddDays(1); } while(Util.WeekNumber(dt.Year, dt.Month, dt.Day) == week) { Console.WriteLine(dt.ToString("dd-MMM-yyyy")); dt = dt.AddDays(1); } } public static void Main(string[] args) { Test(2000, 1); Test(2001, 1); Test(2002, 1); Test(2003, 1); Test(2004, 1); Test(2005, 1); Test(2006, 1); } } } giver 2000/1: 03-jan-2000 04-jan-2000 05-jan-2000 06-jan-2000 07-jan-2000 08-jan-2000 09-jan-2000 2001/1: 01-jan-2001 02-jan-2001 03-jan-2001 04-jan-2001 05-jan-2001 06-jan-2001 07-jan-2001 2002/1: 31-dec-2001 01-jan-2002 02-jan-2002 03-jan-2002 04-jan-2002 05-jan-2002 06-jan-2002 2003/1: 30-dec-2002 31-dec-2002 01-jan-2003 02-jan-2003 03-jan-2003 04-jan-2003 05-jan-2003 2004/1: 29-dec-2003 30-dec-2003 31-dec-2003 01-jan-2004 02-jan-2004 03-jan-2004 04-jan-2004 2005/1: 03-jan-2005 04-jan-2005 05-jan-2005 06-jan-2005 07-jan-2005 08-jan-2005 09-jan-2005 2006/1: 02-jan-2006 03-jan-2006 04-jan-2006 05-jan-2006 06-jan-2006 07-jan-2006 08-jan-2006
18. november 2005 - 09:03
#15
hmm der er en forskel på de 2 måder. En af dem er den rigtige. Jeg tror det er den første af dem.
18. november 2005 - 09:08
#16
jeg er sikker på at det er den sidste uger er hele uge uge 1 = første uge i året med 4 eller flere daga = ugen med den første torsdag i året
18. november 2005 - 10:02
#17
hvis det er den sidste så er min mayland kalender forkert på den.
18. november 2005 - 13:16
#18
18. november 2005 - 13:22
#19
tror du har ret jeg lagde ikke mærke til at nytår 2004/2005 var ens :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.