如何获取日期(yyyy/mm/dd)从滴答,而不使用实例/助手/从Datetime c#
本文关键字:实例 Datetime 助手 滴答 何获 yyyy mm dd 取日期 | 更新日期: 2023-09-27 18:16:31
我正在尝试从刻度中提取日期。
我说的对吗,一毫秒是10000个滴答。一天是864000000000个节拍和一个月等于26784000000000,一年等于316224000000000。
但是当我在计算中使用这些时,我得到了错误的日期:(.
使用Datetime解析可能很容易,但是,由于某些原因,他们说我不应该依赖它,因为它相当慢。
非常感谢你的帮助。谢谢你。
更新://assume this for now
DateTime time = DateTime.Now;
char[] ashigakaricom= new char[] { 'yyyy','-','mm','-','dd','-','H','H',':','M','M',':','S','S',':','m','m','m' };
long ticks = time.Ticks;
int n1 = (int)(ticks >> 32);
int n2 = (int)ticks;
if (n2 < 0)
n1++;
ticks = (((Math.BigMul(429497, n2) - (int)(Math.BigMul(1161359156, n2) >> 32) - Math.BigMul(1161359156, n1)) >> 32)) + Math.BigMul(n1, 429497); n1 = (int)(ticks >> 32);
n2 = (int)ticks;
if (n2 < 0)
n1++;
int q = n1 * 50 + ((50 * (n2 >> 16)) >> 16) - (int)(System.Math.BigMul(1244382467, n1) >> 32) - 1;
int r = (int)(ticks - System.Math.BigMul(q, 86400000));
if (r > 86400000)
r -= 86400000;
//so on
,月为26784000000
啊-对不起,你住在哪个星球上哦?在我的星球上(称为"地球"),每个月有28到31天,所以它们不能被标准化为特定的滴答数。
你能想到的最好的是IIRC
对于你想要实现的目标,没有办法绕过工作日历,这意味着大量的维护和开销。平均每月5小时。只要使用。net提供的-这是大量的工作来复制零增益。
我有几个想法:
- 如果您错过了正确的年份-可能是假设这个刻度计算的错误起点。对于c#来说,它不是Unix纪元的开始(1970年1月1日),而是"天的开始"(0001年1月1日); 日期、小时或分钟不正确——这可能与闰年有关。
试试这个:
TimeSpan elapsedSpan = new TimeSpan(10000);
or: TimeSpan elapsedSpan = TimeSpan.FromTicks(10000);
then use: elapsedSpan.Milliseconds, elapsedSpan.Days
裁判:http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx
p/S: 316224000000000 ticks = 366 days.
毫秒可以是任意数量的刻度(取决于您使用的是什么)。无论如何,即使您有自epoch以来的天数(假设1-1-1970),您仍然很难计算每个月(例如2月)的天数。