2008-12-30 11 views

Odpowiedz

12
public static int Weekday(DateTime dt, DayOfWeek startOfWeek) 
{ 
    return (dt.DayOfWeek - startOfWeek + 7) % 7; 
} 

ten można wywołać za pomocą:

DateTime dt = DateTime.Now; 
Console.WriteLine(Weekday(dt, DayOfWeek.Friday)); 

Powyższe wyjścia:

4 

jak wtorku 4 dni po piątku.

+3

Wartość zwracana funkcji VB6 (i VB.NET) wynosi 1. 'return ((dt.DayOfWeek - startOfWeek + 7)% 7) + 1;' – 300hp

2

Tak Każda wartość DateTime posiada wbudowany właściwość o nazwie DAYOFWEEK zwracającej wyliczenie tej samej nazwie ...

DayOfWeek dow = DateTime.Now.DayOfWeek; 

Jeśli chcesz wartość integralną prostu rzucić wartość wyliczenia do int.

int dow = (int)(DateTime.Now.DayOfWeek); 

Musisz dodać stałą od 1 do 6 i 7, aby zrobić Mod wyrównać go do innego dnia oprócz niedzieli, jednak ...

1

nie sądzę istnieje odpowiednik dwie argumenty w postaci funkcji dnia roboczego VB.

Można go emulować za pomocą czegoś takiego;

private static int Weekday(DateTime date, DayOfWeek startDay) 
{ 
    int diff; 
    DayOfWeek dow = date.DayOfWeek; 
    diff = dow - startDay; 
    if (diff < 0) 
    { 
     diff += 7; 
    } 
    return diff; 
} 

Następnie nazywając go tak:

int i = Weekday(DateTime.Now, DayOfWeek.Friday); 

Zwraca 4 do dzisiaj, jak wtorek jest 4 dni po piątku.

Powiązane problemy