Unix-tijd omzetten in datum-tijd via Excel

Probeer 1504865618099.00 Unix-tijd om te zetten in een leesbare datum-tijd.
Ik heb dit geprobeerd:

=(UNIX + ("1/1/1970"-"1/1/1900"+1)*86400) / 86400

Maar het werkt niet.


Antwoord 1, autoriteit 100%

  • Om het tijdperk (Unix-Time) om te zetten in normale tijd zoals voor de onderstaande tijdstempel

    Bijvoorbeeld: 1517577336206

  • Converteer eerst de waarde met de volgende functie zoals hieronder

    =LEFT(A1,10) & "." & RIGHT(A1,3)

  • De uitvoer is zoals hieronder

    Bijvoorbeeld: 1517577336.206

  • Voeg nu de formule toe zoals hieronder

    =(((B1/60)/60)/24)+DATE(1970,1,1)

  • Maak nu de cel op zoals hieronder of vereist formaat (aangepast formaat)

    m/d/yyyy h:mm:ss.000

Nu komt de tijd als voorbeeld

2/2/2018 13:15:36.206

De drie nullen zijn voor milliseconden


Antwoord 2, autoriteit 48%

=A1/(24*60*60) + DATE(1970;1;1)zou moeten werken met seconden.

=(A1/86400/1000)+25569als uw tijd in milliseconden is, dus delen door 1000 geeft u de juiste datum

Vergeet niet het type in te stellen op Datein uw uitvoercel. Ik heb het geprobeerd met deze datum: 1504865618099wat gelijk is aan 8-09-17 10:13.


Antwoord 3, autoriteit 28%

TLDR

=(A1/86400)+25569

…en het formaat van de celmoet datum zijn.

Als het niet voor u werkt

  • Als u een getal krijgt, bent u vergeten de uitvoercel op te maken als een datum.
  • Als je #####krijgt, heb je waarschijnlijk geen echte Unix-tijd. Kijk jouw … Na
    tijdstempels in https://www.epochconverter.com/. Probeer je input te delen door 10, 100, 1000 of 10000**
  • Je werkt met tijdstempels buiten de (zeer uitgebreide) limieten van Excel.
  • Je hebt A1niet vervangen door de cel met het tijdstempel ;-p

Uitleg

Unix-systemen geven een tijdstip weer als een getal. Specifiek het aantal seconden* sinds een nultijd die het Unix-tijdperk wordt genoemd en die 1/1/1970 00:00 UTC/GMTis. Dit aantal seconden wordt “Unix-tijdstempel”of “Unix-tijd”of “POSIX-tijd”genoemd of gewoon “tijdstempel”en soms (verwarrend) “Unix-tijdperk”.

In het geval van Excel kozen ze voor een andere nultijd en stap (want wie houdt er nu niet van variatie in technische details?). Excel telt dus dayssinds 24 hours before 1/1/0000 UTC/GMT. Dus 25569 komt overeen met 1/1/1970 00:00 UTC/GMTen 25570 met 2/1/1970 00:00.

Als je nu ook opmerkt dat we 86400 seconden per dag hebben (24 uur x60 minuten x60 seconden) en je begrijpt wat deze formule doet: A1/86400converteert seconden naar dagen en +25569past de afwijking aan tussen wat nultijd is voor Unix en wat nultijd is voor Excel.

Trouwens DATE(1970,1,1)zal 25569 voor je teruggeven voor het geval je dit alles vergeet, dus een meer “zelfdocumenterende”manier om schrijf onze formule is:

=A1/(24*60*60) + DATE(1970,1,1)

P.S.: Al deze waren al aanwezig in andere antwoorden en opmerkingen, maar niet zo opgemaakt zoals ik ze leuk vind en ik denk niet dat het OK is om een ​​ander antwoord te bewerken.


*: dat is bijna correct, want je moet geen schrikkelseconden tellen

**: bijv. in het geval van deze vraag was het aantal millisecondensinds het Unix-tijdperk.


Antwoord 4, autoriteit 6%

Als je ######## hebt, kan het je helpen:

=((A1/1000+1*3600)/86400+25569)

+1*3600is GTM+1


Antwoord 5, autoriteit 2%

voor het geval het bovenstaande niet voor u werkt. voor mij deed dit om de een of andere reden niet;

de UNIX-nummers waar ik aan werk zijn van de Mozilla place.sqlite-datums.

om het te laten werken: ik heb de UNIX-cellen in twee cellen gesplitst: een van de eerste 10 cijfers (de datum) en de andere 4 cijfers over (de seconden geloof ik)

Vervolgens gebruikte ik deze formule, =(A1/86400)+25569 waarbij A1 de cel bevat met het eerste 10-nummer; en het werkte


Antwoord 6

U ziet de datum als ########hoogstwaarschijnlijk omdat de EPOCH-tijden per definitie in seconden zijn – https://en.wikipedia.org/wiki/Unix_time. Dit betekent dat het nummer 10 tekens lang moet zijn. Uw nummer heeft 13 tekens (zie 1504865618099) en is hoogstwaarschijnlijk in milliseconden (MS). Om de formule te corrigeren, deelt u het getal door 1000. Houd er rekening mee dat u op deze manier de MS-precisie verliest, maar in de meeste gevallen is dit OK. Dus de uiteindelijke formule zou moeten zijn:

=A1/(86400 * 1000) + DATE(1970,1,1)

Other episodes