Hej! Är det inte bara att använda DayOfWeek-propertyn för att få dag-numret (0-6) och sedan dra bort detta antal dagar ifrån datumet. Typ så här : Hej! Ah ok, det du är ute efter är ISO 8601 veckonummer, googla på det så hittar du en del träffar, men här är en färdig klass som du kan ha nytta av : hej! Bra finess men den räknar fel. :-( Vet att det inte är exakt vad du frågade efter, men du kan kanske ha nytta av det. Jag satt och labbade lite och kom fram till detta, det finns säkert många andra lösningar som är bättre men det är alltid något.Få fram datumet på första dagen i en vecka igenom veckonummer
Jag behöver hjälp att få fram datumet för första dagen in vecka med hjälp av veckonummer.
Har kollat lite på Calendar classen men har svårt att komma igång.
Har någon något exempel?
/tyronneSv: Få fram datumet på första dagen i en vecka igenom veckonummer
<code>
System.DateTime theDate=System.DateTime.Now();
System.DateTime firstDate=theDate.AddDays(-theDate.DayOfWeek);
</code>Sv:Få fram datumet på första dagen i en vecka igenom veckonummer
Jag håller på med ett bokningssystem som bygger på veckor. Det jag skall göra är att man anger ex v.43 och då vill jag sedan för fram datumet för måndagen i den veckan. Därefter kommer jag kunna hantera resten
Så Veckonumret är det jag måste kunna mata in i funktionen.
/TyronneSv: Få fram datumet på första dagen i en vecka igenom veckonummer
http://www.codeproject.com/csharp/GregToISO.aspSv:Få fram datumet på första dagen i en vecka igenom veckonummer
Den har jag nytta av, men det var inte riktigt det jag var ute efter. Till 99% på alla gogglingar så finns det exempel på hur man kan få fram veckonummer igenom att ange ett datum. Jag är ute efter det omvända. Att jag anger ett veckonummer och sedan får ut, helst alla datumen i den veckan om det går. Annars så bara första datumet i veckan, dvs måndagens datum.
i [Få fram dagar från veckonummer.] som är vanlig asp finns det ett exempel. Men den använder DatePart vilcket inte finns i C#. Har försökt omvandla den men misslyckats.
<code>
function getMonday(y, w)
'Vilken dag i veckan är 1a januari det valda året?
weekDayJanFirst = datepart("w", y & "-01-01", 3)
'Plocka ut måndagen i den valda veckan
mondayOfWeek = dateAdd("d", w * 7 - weekDayJanFirst, y & "-01-01")
getMonday = mondayOfWeek
end function
'Låt oss skriva ut datumet för måndagen vecka 5 år 2006
response.write getMonday(2006, 5)
</code>
/TyronneSv: Få fram datumet på första dagen i en vecka igenom veckonummer
Sv: Få fram datumet på första dagen i en vecka igenom veckonummer
Hur du får fram exakt vilken vecka det är ett visst datum
<code>
CultureInfo ci = CultureInfo.CurrentCulture;
Calendar cal = ci.Calendar;
DayOfWeek fdow = ci.DateTimeFormat.FirstDayOfWeek;
CalendarWeekRule cwr = ci.DateTimeFormat.CalendarWeekRule;
int week = cal.GetWeekOfYear(DateTime.Now, cwr, fdow);
</code>Sv: Få fram datumet på första dagen i en vecka igenom veckonummer
Ev felhantering och min/max-gränser för olika parametrar får du komplettera med själv.
Funktionen du eftersöker finns i "GetFirstDayOfWeekInYear"
<code>
using System;
using System.Globalization;
namespace JBuMiscLibrary
{
public class jbuDateAndTime
{
CultureInfo mCultureInfo;
Calendar mCalendar;
DayOfWeek mFirstDayOfWeek;
CalendarWeekRule mCalendarWeekRule;
public jbuDateAndTime():this(CultureInfo.CurrentCulture)
{
}
public jbuDateAndTime(CultureInfo cultureInfo)
{
mCultureInfo = cultureInfo;
mCalendar = mCultureInfo.Calendar;
mFirstDayOfWeek = mCultureInfo.DateTimeFormat.FirstDayOfWeek;
mCalendarWeekRule = mCultureInfo.DateTimeFormat.CalendarWeekRule;
}
public int GetWeekNoForDate(DateTime date)
{
int week = mCalendar.GetWeekOfYear(date, mCalendarWeekRule, mFirstDayOfWeek);
return week;
}
public DateTime GetFirstDayOfWeekInYear(int week, int year)
{
return GetDateForDayOfWeekInYear(mFirstDayOfWeek, week, year);
}
public DateTime GetDateForDayOfWeekInYear(DayOfWeek day, int week, int year)
{
DateTime initDate = FirstDayOfYear(year);
int weeksToAdd;
if (GetWeekNoForDate(initDate) > 1)
weeksToAdd = week;
else
weeksToAdd = week - 1;
DateTime dateWeek = mCalendar.AddWeeks(initDate, weeksToAdd);
DateTime dateFirstDayOfWeek = mCalendar.AddDays(dateWeek, day - mCalendar.GetDayOfWeek(dateWeek));
return dateFirstDayOfWeek;
}
private DateTime FirstDayOfYear(int year)
{
return new DateTime(year, 1, 1);
}
}
}
</code>