int ms = Convert.ToInt32(
Convert.ToString(DateTime.Now.Millisecond).Substring(0, 3));
Run Code Online (Sandbox Code Playgroud)
或者
double Length = Math.Pow(10, (DateTime.Now.Millisecond.ToString().Length - 3));
double Truncate = Math.Truncate((double)DateTime.Now.Millisecond / Length);
Run Code Online (Sandbox Code Playgroud)
编辑:
在我将发布的代码上运行下面的代码后,由于变量的重用,双倍方法效果很好。在 5,000,000 次 DateTime.Now 的迭代中(其中许多将被两项检查跳过),该SubString()方法花费了 9598 毫秒,而该Double方法花费了 6754 毫秒。
编辑#2:在 * 1000 中编辑到测试中以确保迭代正在运行。
用于测试的代码如下:
Stopwatch stop = new Stopwatch();
stop.Start();
for (int i = 0; i < 5000000; i++)
{
int MSNow = DateTime.Now.Millisecond * 1000;
if (MSNow.ToString().Length > 2)
{
int ms = Convert.ToInt32(
Convert.ToString(MSNow).Substring(0, 3));
}
}
stop.Stop();
Console.WriteLine(stop.ElapsedMilliseconds);
stop = new Stopwatch();
stop.Start();
for (int i = 0; i < 5000000; i++)
{
int MSNow = DateTime.Now.Millisecond * 1000;
int lengthMS = MSNow.ToString().Length;
if (lengthMS > 2)
{
double Length = Math.Pow(10, (lengthMS - 3));
double Truncate = Math.Truncate((double)MSNow / Length);
}
}
stop.Stop();
Console.Write(stop.ElapsedMilliseconds);
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)