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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.