Avatar billede sbjerre Nybegynder
31. januar 2003 - 15:56 Der er 5 kommentarer og
2 løsninger

Uge numre i ASP.NET - del 2

endnu et spørgsmål....
hvordan gør jeg følgende:

input:  ugenummer, årstal
output:  datetime object

altså får et datetime object udfra et givent ugenummer og et årstal

vh sbjerre
Avatar billede 12tri Nybegynder
31. januar 2003 - 18:28 #1
Hvor er del 1 ?...
Avatar billede askhoej Praktikant
31. januar 2003 - 19:36 #2
Måske noget i denne her retning (ca.):

int intWeeks = 4;
int intYears = 2001;
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("da-DK");
DateTime dt = new DateTime(1, 1, 1, 0, 0, 0, 0, ci.Calendar);
dt = ci.Calendar.AddYears(dt,intYears-1);
dt = ci.Calendar.AddWeeks(dt,intWeeks);
Response.Write(dt.ToLongDateString().ToString());

/askhoej
Avatar billede askhoej Praktikant
31. januar 2003 - 19:41 #3
Et lille P.S. jeg mener selv at der er en lille BUG i .NET's System.Globalization.CultureInfo da den ikke er helt suveræn til det med ugenumre.

F.eks. så var 30. og 31. december 2002 uge 53 i følge .NET, men i følge min kalender var det uge 1 :-)

/askhoej
Avatar billede jespernaur Nybegynder
31. januar 2003 - 20:03 #4
Det er nok fordi der i forskellige lande er forskellige opfattelser af, hvordan uge 1 defineres. Her i landet er det den uge, der indeholder årets første torsdag. Se

http://www.eksperten.dk/spm/218381
Avatar billede askhoej Praktikant
31. januar 2003 - 20:09 #5
jespernaur >> jo det er jeg klar over, men hvis bruger objektet på følgende måde:
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("da-DK");

Så burde man kunne gå udfra at den kan finde ud af danske ugenumre?
Avatar billede bechmann Nybegynder
04. februar 2003 - 14:58 #6
Se http://www.eksperten.dk/spm/311806
Der er en bug i Windows. Det er ikke kun .NET. Der er et eksempel på, hvordan man løser problemet taget fra en knowledgebase artikel.
Avatar billede bechmann Nybegynder
04. februar 2003 - 15:09 #7
Denne funktion skulle gerne returnere mandag i den uge du ønsker.

public DateTime GetMondayInWeek(int year, int week){
inr calcWeek;
  DateTime firstDayOfWeek = new DateTime(year, 1, 1);
  CultureInfo cultureInfo = new CultureInfo("da-DK");
  System.Globalization.Calendar gregorianCalendar = cultureInfo.Calendar;
  // bug i Windows - knowledgebase artikel
  if ( gregorianCalendar.GetWeekOfYear(firstDayOfWeek, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) > 52 && gregorianCalendar.GetWeekOfYear(firstDayOfWeek.AddDays(7), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday) == 2 ){
          calcWeek = 1;
        }else{
          calcWeek = gregorianCalendar.GetWeekOfYear(firstDayOfWeek, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
        }
  if ( calcWeek != 1 ){
    firstDayOfWeek = firstDayOfWeek.AddDays(7);
  }
  while ( firstDayOfWeek.DayOfWeek != DayOfWeek.Monday ){
    firstDayOfWeek = firstDayOfWeek.AddDays(-1);
  }
  return gregorianCalendar.AddWeeks(firstDayOfWeek, week-1);
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester