යුගයේ කාලරාමුව මානව කියවිය හැකි ආකෘතියකට ක්ලයි මත පරිවර්තනය කරන්නේ කෙසේද?


198

යුගයේ කාලරාමුව මානව කියවිය හැකි ආකෘතියකට ක්ලයි මත පරිවර්තනය කරන්නේ කෙසේද? දිනය සමඟ එය කිරීමට ක්‍රමයක් ඇතැයි මම සිතමි, නමුත් වාක්‍ය ඛණ්ඩය මග හැරේ (වෙනත් ක්‍රම සාදරයෙන් පිළිගනී).

Answers:


299

* BSD මත:

date -r 1234567890

ලිනක්ස් මත (විශේෂයෙන් GNU coreutils with5.3 සමඟ):

date -d @1234567890

GNU දිනයෙහි පැරණි අනුවාදයන් සමඟ, ඔබට UTC යුගයට සාපේක්ෂ වෙනස ගණනය කළ හැකිය:

date -d '1970-01-01 UTC + 1234567890 seconds'

ඔබට අතේ ගෙන යා හැකි නම්, ඔබ වාසනාවන්ත නැත. ඔබට POSIX shell විධානයක් සමඟ සංයුති කළ හැකි එකම අවස්ථාව (ගණනය කිරීම ඔබම නොකර) වර්තමාන කාලයයි. ප්රායෝගිකව, පර්ල් බොහෝ විට ලබා ගත හැකිය:

perl -le 'print scalar localtime $ARGV[0]' 1234567890

4
අතේ ගෙන යා හැකි lack නතාවය පිළිබඳ අදහස් දැක්වීම සඳහා +1 (පොසික්ස් පිරිවිතරයට මෙය කිරීමට ක්‍රමයක් ඇතුළත් නොවන්නේ ඇයි? Grr)
රිචඩ් හැන්සන්

3
මෙහි @තේරුම date -d @1234567890කුමක්ද? man dateඒ ගැන කිසිම සඳහනක් කළේ නැහැ ...
ක්‍රිස් මාක්ල්

10
H ක්‍රිස්මාර්කල් ග්නූ මෑන් පිටු බොහෝ විට දුක්ඛිත ලෙස අසම්පූර්ණයි. “මෙහි පහසුවෙන් ලේඛනගත කර ඇති දිනට වඩා දිනය නූල් ආකෘතිය වඩාත් සංකීර්ණ නමුත් තොරතුරු ලේඛනයේ එය සම්පූර්ණයෙන්ම විස්තර කර ඇත.” බුද්ධියට
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

2
මෙම info dateඉතා සම්පූර්ණ කර තිබේ. ඇතුලත් 28.9 Seconds since the Epochකිරීම @ ටයිම්ස්ටැම්ප් ගැන විස්තරාත්මකව පැහැදිලි කරයි.

පයිප්පයක ලිනක්ස් වල: දිනය + '% s' | xargs -I n date -d @n
අයිවන් ඔගයි


14
$ echo 1190000000 | perl -pe 's/(\d+)/localtime($1)/e' 
Sun Sep 16 20:33:20 2007

ලොග්ෆයිල් වල යුග කාලය භාවිතා කරන යෙදුම් සඳහා මෙය ප්‍රයෝජනවත් වේ:

$ tail -f /var/log/nagios/nagios.log | perl -pe 's/(\d+)/localtime($1)/e'
[Thu May 13 10:15:46 2010] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;HOSTA;check_raid;0;check_raid.pl: OK (Unit 0 on Controller 0 is OK)

13

ඔබගේ යුගයේ කාලය තත්පර වෙනුවට මිලි තත්පර වලින් නම්, එය සම්මත කිරීමට පෙර අවසන් ඉලක්කම් තුන ඉවත් කරන්න date -d:

$ date -d @1455086371603
Tue Nov  7 02:46:43 PST 48079     #Incorrect

මෙය වැරදි දත්ත ලබා දෙයි. අවසාන ඉලක්කම් තුන ඉවත් කරන්න.

$ date -d @1455086371
Tue Feb  9 22:39:31 PST 2016      #Correct after removing the last three digits. You may remove and round off the last digit too.

මිලි තත්පර (තිතක් නොමැතිව) ඇතුළත් කළ උපයෝගිතා මුද්‍රණ මොනවාද?

වෙබ් ලොජික් යෙදුම් සේවාදායකය බොහෝ විට දත්ත කාල අගයන් මිලි තත්පර වලින් ලබා දෙන බවත් ස්ක්‍රිප්ටින් මෙවලම භාවිතා කරන විට තිත් නොමැති බවත් මම දැක ඇත්තෙමි. උදා: lastSuccessfulConnectionUse = 1455086371603
KnockTurnAl

මට පේනවා. මෙම පිටුව අමු කාල අගය තහවුරු කරයි කාලරාමුව මිලි තත්පර වලින් . ස්තූතියි.

ඇට්ලේෂියන් මෙවලම් ඔවුන්ගේ කාලරාමු යුග යුගය ලෙස මිලි තත්පර සමඟ සටහන් කරයි.
Br.Bill

මෙම පිළිතුර නිසා මට බොහෝ කාලය නාස්ති විය. ස්තූතියි!
ටං

12

GNU සමඟ අභිරුචි ආකෘතිය date:

date -d @1234567890 +'%Y-%m-%d %H:%M:%S'

හෝ GNU සමඟ awk:

awk 'BEGIN { print strftime("%Y-%m-%d %H:%M:%S", 1234567890); }'

සම්බන්ධිත SO ප්‍රශ්නය: /programming/3249827/convert-from-unixtime-at-command-line


3
වැඩ කරන්නේ GNU දිනය සහ GNU awk සඳහා පමණි. අමුතු හෝ නවක වදය strftime සඳහා සහාය නොදක්වයි.
DarkHeart

11

සමඟ bash-4.2හෝ ඊට ඉහළින්:

printf '%(%F %T)T\n' 1234567890

(එහිදී %F %Tතමයි strftime()-type ආකෘතිය)

එම වාක්‍ය ඛණ්ඩය දේවානුභාවයෙන් ksh93.

දී ksh93කෙසේ වෙතත්, එම තර්කය විවිධ බහෙවින් ලේඛනගත ආකෘති සහාය කරන, දිනය ප්රකාශනයක් ලෙස කටයුතු කරනු ලැබේ.

යුනික්ස් යුගයක් සඳහා, වාක්‍ය ඛණ්ඩය ksh93:

printf '%(%F %T)T\n' '#1234567890'

ksh93කෙසේ වෙතත් කාල කලාපය සඳහා තමන්ගේම ඇල්ගොරිතමයක් භාවිතා කරන බව පෙනේ. නිදසුනක් වශයෙන්, බ්‍රිතාන්‍යයේ 1970 දී එය ගිම්හාන කාලය විය, නමුත්:

$ TZ=Europe/London bash -c 'printf "%(%c)T\n" 0'
Thu 01 Jan 1970 01:00:00 BST
$ TZ=Europe/London ksh93 -c 'printf "%(%c)T\n" "#0"'
Thu Jan  1 00:00:00 1970

7

මම නිතර භාවිතා කරන දෙක නම්:

$ perl -leprint\ scalar\ localtime\ 1234567890
Sat Feb 14 00:31:30 2009

හා

$ tclsh
% clock format 1234567890
Sa Feb 14 00:31:30 CET 2009

7

සමග zshඔබ භාවිතා කළ හැකි strftimebuiltin:

අවසාන පිවිසුම ආකෘතිය epochtime

      ප්රතිදාන මගින් වන දිනය epochtime තුළ ආකෘතිය දක්වා නොමැත.

උදා

zmodload zsh/datetime
strftime '%A, %d %b %Y' 1234567890
2009 පෙබරවාරි 13 වන සිකුරාදා

dateconvවෙතින් ද ඇත dateutils:

dateconv -i '%s' -f '%A, %d %b %Y' 1234567890
2009 පෙබරවාරි 13 වන සිකුරාදා

dateutilsමෙවලම් පෙරනිමියෙන් මතක තබා ගන්න UTC( -z your/timezoneඅවශ්‍ය නම් එකතු කරන්න ).


0

ෂෙල් එකෙන් කෙලින්ම විග්‍රහ කළ හැකි ආකෘතියේ දිවා කාලය මුද්‍රණය කිරීම සඳහා ඔබට කුඩා සී වැඩසටහනක් භාවිතා කළ හැකිය

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

int main(int argc, char * argv[]) {

    if (argc==1) { 
        return 1;
    }

    struct tm input_tm;
    char * formatStr  = "YEAR=%Y\nMON=%m\nDAY=%d\nHOUR=%H\nMIN=%M\nSEC=%S";
    size_t formatSize = strlen(formatStr) + 2;
    char * output     = (char *)malloc(sizeof(char)*formatSize);

    strptime(argv[1],"%s",&input_tm);
    strftime(output, formatSize, formatStr, &input_tm);

    printf("%s\n",output);
    free(output);
    return 0;
}

භාවිතය:

#compile
clang -o epoch2datetime main.c

#invoke
eval `./epoch2datetime 1450196411`
echo $YEAR $MON $DAY $HOUR $MIN $SEC
#output
#2015 12 16 00 20 11

0

කුඩා node.js නොමැතිව සැබෑ විසඳුමක් නොවනු ඇත:

epoch2date(){
    node -p "new Date($1)"
}

එම එක් ~/.bash_aliasesස්ථිර එහි මූලාශ්ර කරන්න ~/.bashrcසමග. ~/.bash_aliases

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

ඔබේ පද්ධතියේ නෝඩ් ලබා ගැනීමට http://nvm.sh සහ curl විධානය ක්‍රියාත්මක කරන්න. එය නෝඩ් අනුවාද කළමනාකරු (එන්වීඑම්) ස්ථාපනය කරනු ඇති අතර එමඟින් ඔබට නෝඩ් අනුවාද මාරු කිරීමට ඉඩ ලබා දේ.

ටයිප් nvm ls-remoteකර අනුවාදයක් තෝරන්න nvm install <version>.


0

දී PowerShell :

(([System.DateTimeOffset]::FromUnixTimeMilliSeconds($unixtime)).DateTime).ToString("s")

මෙම තාක්ෂණය මයික්‍රොසොෆ්ට් .නෙට් භාවිතා කරයි. OP MS විසඳුමක් සොයන බවක් නොපෙනේ.
user2320464

2
විචාරකයින්: පවර්ෂෙල් ලිනක්ස් ;-) වෙතින් ලබා ගත හැකිය.
ස්ටීවන් කිට්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.