我已将一周中的几天转换为各自的整数值.
例如:Tuesday, Thursday, FridayAs2,4,5
现在我需要回到整数的日子.
只是与我所做的相反.
问题的反向: 获取星期几的整数值
是否有一种简单的标准方法可以从C#中的整数值获取星期几,否则我将不得不使用方法执行手动计算?
首先:
我问这个问题只是为了好玩和渴望学习.我不得不承认我喜欢搞微观优化(虽然他们从未在我的任何开发中导致任何显着的速度提升).
该DateTime.DayOfWeek方法并不代表我的任何应用中的瓶颈.
并且它不太可能 成为任何其他问题.如果有人认为这种方法对他的应用程序的性能有影响,他应该考虑何时进行优化,然后,他应该进行分析.
DateTime使用ILSpy 反编译类,我们了解如何DateTime.DayOfWeek实现:
[__DynamicallyInvokable]
public DayOfWeek DayOfWeek
{
[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
get
{
return (DayOfWeek)((this.InternalTicks / 864000000000L + 1L) % 7L);
}
}
public long Ticks
{
[__DynamicallyInvokable, TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
get
{
return this.InternalTicks;
}
}
Run Code Online (Sandbox Code Playgroud)
此方法执行以下操作:
与当天相对应的刻度除以一天中现有的刻度数.
我们在前面的结果中加1,以便除数7的余数在0和6之间.
这是计算星期几的唯一方法吗?
是否有可能重新实现它以使其运行更快?
如何使用整数值确定星期几,而另一个整数确定星期几?例如,如果今天是(为星期天输入一个类似0的整数),而我则输入整数2,则其为星期二。这是我到目前为止的代码:
namespace DayOfTheWeek
{
class Program
{
static void Main(string[] args)
{
int Sunday=0;
int Monday = 1;
int Tuesday = 2;
int Wednesday = 3;
int Thursday = 4;
int Friday = 5;
int Saturday = 6;
Console.WriteLine("Today is " + 0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我真的很为难。