de-vraag
  • Klausimai
  • Žymos
  • Vartotojai
Pranešimai
Apdovanojimai
Registracija
Užsiregistravę gausite pranešimus apie atsakymus ir komentarus į savo klausimus.
Prisijungti
Jei jau turite paskyrą, prisijunkite ir patikrinkite naujus pranešimus.
Už pridėtus klausimus, atsakymus ir komentarus bus skiriami apdovanojimai.
Daugiau
Šaltinis
Redaguoti
Mark Ingram
Mark Ingram
Question

Kaip konvertuoti "Unix" laiko žymą į "DateTime" ir atvirkščiai?

Yra šis pavyzdinis kodas, tačiau jame pradedama kalbėti apie milisekundžių / nanosekundžių problemas.

Tas pats klausimas yra MSDN, Seconds since the Unix epoch in C#.

Kol kas turiu štai ką:

public Double CreatedEpoch
{
  get
  {
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
    TimeSpan span = (this.Created.ToLocalTime() - epoch);
    return span.TotalSeconds;
  }
  set
  {
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
    this.Created = epoch.AddSeconds(value);
  }
}
707 2008-10-30T10:30:29+00:00 3
Peter Mortensen
Peter Mortensen
Redaguotas klausimas popietr sausis 2018 в 8:36
Programavimas
datetime
c#
unix
data-conversion
epoch
Šis klausimas turi 1 atsakymas atsakymų anglų kalba, norėdami juos perskaityti prisijunkite prie savo paskyros.
Solution / Answer
 ScottCher
ScottCher
popietr spalis 2008 в 2:42
2008-10-30T14:42:17+00:00
Daugiau
Šaltinis
Redaguoti
#8601638

Štai ko jums reikia:

public static DateTime UnixTimeStampToDateTime( double unixTimeStamp )
{
    // Unix timestamp is seconds past epoch
    System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
    dtDateTime = dtDateTime.AddSeconds( unixTimeStamp ).ToLocalTime();
    return dtDateTime;
}

Arba Java (tai skiriasi, nes laiko žyma pateikiama milisekundėmis, o ne sekundėmis):

public static DateTime JavaTimeStampToDateTime( double javaTimeStamp )
{
    // Java timestamp is milliseconds past epoch
    System.DateTime dtDateTime = new DateTime(1970,1,1,0,0,0,0,System.DateTimeKind.Utc);
    dtDateTime = dtDateTime.AddMilliseconds( javaTimeStamp ).ToLocalTime();
    return dtDateTime;
}
968
0
 n8CodeGuru
n8CodeGuru
popietr balandis 2011 в 8:34
2011-04-12T20:34:51+00:00
Daugiau
Šaltinis
Redaguoti
#8601640

Teisingą atsakymą radau tik palyginęs perskaičiavimą su 1970 m. sausio 1 d. be vietos laiko koregavimo;

DateTime date = new DateTime(2011, 4, 1, 12, 0, 0, 0);
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan span = (date - epoch);
double unixTime =span.TotalSeconds;
 CyberFox
CyberFox
Redaguotas atsakymas popietr birželis 2013 в 10:16
5
0
 Luk
Luk
priešpietr spalis 2008 в 10:53
2008-10-30T10:53:34+00:00
Daugiau
Šaltinis
Redaguoti
#8601637

"Unix" erkė yra 1 sekundė (jei gerai pamenu), o .NET erkė yra 100 nanosekundžių.

Jei susidūrėte su problemomis dėl nanosekundžių, galite pabandyti naudoti AddTick(10000000 * value).

Peter Mortensen
Peter Mortensen
Redaguotas atsakymas priešpietr rugsėjis 2015 в 9:45
2
0
Pridėti klausimą
Kategorijos
Visi
Technologijos
Kultūra / poilsis
Gyvenimas / Menai
Mokslas
Profesionalus
Verslas
Vartotojai
Visi
Naujas
Populiarus
1
Roxana Elizabeth CASTILLO Avalos
Registruota prieš 4 dienas
2
Hideo Nakagawa
Registruota prieš 5 dienas
3
Sergiy Tytarenko
Registruota prieš 6 dienas
4
shoxrux azadov
Registruota prieš 1 savaitę
5
Koreets Koreytsev
Registruota prieš 1 savaitę
DE
EL
ES
FR
ID
IT
JA
LT
NL
PT
RU
TR
ZH
© de-vraag 2022
Šaltinis
stackoverflow.com
pagal licenciją cc by-sa 3.0 nurodant autorystę