un código simple:Banderas de bits: ¿Qué me estoy perdiendo?
protected void Page_Load(object sender, EventArgs e)
{
DateTime now = DateTime.UtcNow;
lit.Text += "<br/>now.DayOfWeek: " + now.DayOfWeek.ToString();
// weekdays (Saturday is not included)
DayOfWeek runningDays = DayOfWeek.Monday | DayOfWeek.Tuesday | DayOfWeek.Wednesday | DayOfWeek.Thursday | DayOfWeek.Friday;
lit.Text += "<br/>" + runningDays.HasFlag(now.DayOfWeek);
lit.Text += "<br/>" + runningDays.HasAny(now.DayOfWeek);
lit.Text += "<br/>" + ((runningDays & now.DayOfWeek) != 0);
// weekend (Saturday is in a weekend)
runningDays = DayOfWeek.Saturday | DayOfWeek.Sunday;
lit.Text += "<br/>" + runningDays.HasFlag(now.DayOfWeek);
lit.Text += "<br/>" + runningDays.HasAny(now.DayOfWeek);
lit.Text += "<br/>" + ((runningDays & now.DayOfWeek) != 0);
}
Un ayudante:
public static bool HasExactly(this DayOfWeek x, DayOfWeek y) { return x == y; }
public static bool HasAny(this DayOfWeek x, DayOfWeek y) { return 0 != (x & y); }
public static bool HasAll(this DayOfWeek x, DayOfWeek y) { return y == (x & y); }
de salida de hoy (Sábado)
now.DayOfWeek: Saturday
True
True
True
True
True
True
embargo, la salida debería ser como:
now.DayOfWeek: Saturday
False
False
False
True
True
True
Wh ¿Me estoy perdiendo aquí?
0 (domingo) a 6 (sábado). – sisve
Sabía que había sido estúpido :(Gracias por indicarme los documentos ... Sigo olvidando que son una parte importante del rol de desarrollador ... pero realmente asumí que DayOfWeek era un Flag Enum: o ( – balexandre