如何获取日期(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

如何获取日期(yyyy/mm/dd)从滴答,而不使用实例/助手/从Datetime c#

,月为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月)的天数。