Gå til innhold

Anbefalte innlegg

Hvordan finner en det? Eneste relaterte jeg finner i .NET Framework er en funksjon som finner ukenummeret til en dato:

CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(
	date,
	CultureInfo.CurrentCulture.DateTimeFormat.CalendarWeekRule,
	CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek);

 

Men jeg trenger en som går andre veien, av typen:

public static DateTime GetFirstDayOfWeek(int Year, int Week)
{
// What to do here??
}

 

Men klarer ikke helt å finne ut hvordan en best og enklest og mest effektivt kan finne den datoen... en måte er jo å loope igjennom datoer til man finner den som har riktig ukenummer. Men det er jo ikke helt effektivt, pluss at en har det problemet med at uke 1 for eksempel ikke alltid starter det året...

 

Noen som har noen smarte ideer? :ermm:

Endret av Svish
Lenke til kommentar
Videoannonse
Annonse

Fant til slutt ut av det etter å ha lest litt rundt forbi og kombinert diverse metoder fra diverse språk:

		public static DateTime GetFirstDayOfWeek(int Year, int Week)
	{
		// Set start date to January 4 (Always in week 1. At least between 1900 to 2100 after a quick test...)
		DateTime a = new DateTime(Year, 1, 4);

		// "Jump" to week number
		a = a.AddDays((Week - 1) * 7);

		// Back up one day until we reach first day of week
		while (a.DayOfWeek > CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek)
			a = a.AddDays(-1);

		// Return the date
		return a;
	}

 

(synes forøvrig at diskusjon.no kunne fått seg noen penere CODE tags med litt syntax farging osv. Kanskje noen spesifikke for diverse språk :) )

Endret av Svish
Lenke til kommentar
Godt spørsmål... jo, det er vel i grunnen meget mulig at en kan... men hva trekker en da fra og fra hva?

Du har jo fått svar på dette noen ganger nå ;-)

 

SomeDate - SomeDate.DayOfWeek = MANDAG

 

 

Men vær obs på at vi i "furet værbitt" starter uken på mandag, mens andre steder på kloden starter på søndag. Jeg hakke studert koden du har presentert så det kan hende du allerede har tatt høyde for det.

 

I Clarion så gjør jeg det slik. Kansje man kan gjhøre det på samme måte i C#

 

DayOfWeek = GivenDate % 7   ! Modulus operasjon
if(DayOfWeek = 0) !Vi har en søndag. 
 Mandag = GivenDate - 6
else
 Mandag = GivenDate - DayOfWeek + 1 
end!If

Jeg kan bruke moduluis fordi en DATE i Clarion er en LONG som forteller hvor mange dager det har gått siden 01.01.18ett-eller-annet

 

Går ut ifra at du kan gjøre det på nøyaktig samme måte i .NET

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...