යුගයේ කාලරාමුව මානව කියවිය හැකි ආකෘතියකට ක්ලයි මත පරිවර්තනය කරන්නේ කෙසේද? දිනය සමඟ එය කිරීමට ක්රමයක් ඇතැයි මම සිතමි, නමුත් වාක්ය ඛණ්ඩය මග හැරේ (වෙනත් ක්රම සාදරයෙන් පිළිගනී).
යුගයේ කාලරාමුව මානව කියවිය හැකි ආකෘතියකට ක්ලයි මත පරිවර්තනය කරන්නේ කෙසේද? දිනය සමඟ එය කිරීමට ක්රමයක් ඇතැයි මම සිතමි, නමුත් වාක්ය ඛණ්ඩය මග හැරේ (වෙනත් ක්රම සාදරයෙන් පිළිගනී).
Answers:
* 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
@
තේරුම date -d @1234567890
කුමක්ද? man date
ඒ ගැන කිසිම සඳහනක් කළේ නැහැ ...
info date
ඉතා සම්පූර්ණ කර තිබේ. ඇතුලත් 28.9 Seconds since the Epoch
කිරීම @ ටයිම්ස්ටැම්ප් ගැන විස්තරාත්මකව පැහැදිලි කරයි.
date -d @1190000000
1190000000 ඔබේ යුගය සමඟ ප්රතිස්ථාපනය කරන්න
$ 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)
ඔබගේ යුගයේ කාලය තත්පර වෙනුවට මිලි තත්පර වලින් නම්, එය සම්මත කිරීමට පෙර අවසන් ඉලක්කම් තුන ඉවත් කරන්න 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.
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
සමඟ 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
සමග zsh
ඔබ භාවිතා කළ හැකි strftime
builtin:
අවසාන පිවිසුම ආකෘතිය 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
අවශ්ය නම් එකතු කරන්න ).
ෂෙල් එකෙන් කෙලින්ම විග්රහ කළ හැකි ආකෘතියේ දිවා කාලය මුද්රණය කිරීම සඳහා ඔබට කුඩා සී වැඩසටහනක් භාවිතා කළ හැකිය
#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
කුඩා 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>
.
දී PowerShell :
(([System.DateTimeOffset]::FromUnixTimeMilliSeconds($unixtime)).DateTime).ToString("s")