gpt4 book ai didi

c# - 为什么我的 DateTime.Now.Millisecond 值总是 "000"?

转载 作者:行者123 更新时间:2023-11-30 20:46:57 24 4
gpt4 key购买 nike

我希望我的毫秒值始终为三个字符长,因此我在必要时用“0”填充它:

private String getPlatypusFileName(String billNum)
{
const string basePortion = "Platypus_";
String PlatypusFileName;
DateTime dt = DateTime.Now;
int Year = dt.Year;
int Month = dt.Month;
int Day = dt.Day;
int Hour = dt.Hour;
int Minute = dt.Minute;
int Second = dt.Second;
int Millisecond = dt.Millisecond;
String paddedBillNum = Prepad(6, billNum);
String mon = Prepad(2, Month.ToString());
String day = Prepad(2, Day.ToString());
String hour = Prepad(2, Hour.ToString());
String min = Prepad(2, Minute.ToString());
String sec = Prepad(2, Second.ToString());
String milli = Prepad(3, Millisecond.ToString());
PlatypusFileName = String.Format("{0}{1}_{2}{3}{4}{5}{6}{7}_{8}.xml",
basePortion, paddedBillNum, Year, mon, day, hour, min, sec, milli);
return PlatypusFileName;
}

private String Prepad(int finalSize, String originalVal)
{
String paddedVal = originalVal;
while (paddedVal.Length < finalSize)
{
paddedVal = "0" + paddedVal;
}
return paddedVal;
}

...但是我总是得到毫秒部分带有三个“0”的 vals;返回值是这样的:

Platypus_000003_20141008145606_000.xml

为什么会这样?

最佳答案

除了您可能在 Windows Compact Framework 上运行之外,您的代码应该可以正常工作,正如所写的那样。作为mentioned here ,CF 始终为 DateTime.Millisecond 返回 0,因此如果您需要具有这种准确性,则需要一些其他方法,例如查看 Environment.TickCount

也就是说,您不需要在此处使用 Prepad - 只需适本地格式化即可:

const string basePortion = "Platypus_";
DateTime dt = DateTime.Now;
int billNum = 3;

string result = string.Format("{0}{1:000000}_{2}{3:00}{4:00}{5:00}{6:00}{7:00}_{8:00}.xml",
basePortion,
billNum,
dt.Year,
dt.Month,
dt.Day,
dt.Hour,
dt.Minute,
dt.Second,
dt.Millisecond);

在我的系统上,这会打印出一个值:Platypus_000003_20141008121707_894.xml - 当然,每次运行时都会发生变化。

关于c# - 为什么我的 DateTime.Now.Millisecond 值总是 "000"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com