11 Za pomocą dateprogramu, jak mogę obliczyć liczbę sekund od północy? date Ptaszyna źródło 1 data „+ (% H * 60 +% M) * 60 +% S” | bc groxxda 1 echo $ (($ (data '+ (% H * 60 +% M) * 60 +% S'))) groxxda Odpowiedzi: 14 Aby uniknąć warunków wyścigu, nadal zakładając datę GNU: eval "$(date +'today=%F now=%s')" midnight=$(date -d "$today 0" +%s) echo "$((now - midnight))" Dzięki zshmożesz to zrobić wewnętrznie: zmodload zsh/datetime now=$EPOCHSECONDS strftime -s today %F $now strftime -rs midnight %F $today echo $((now - midnight)) Przenośnie, w strefach czasowych, w których nie ma przełącznika czasu letniego, możesz: IFS=: set -- $(date +%T) echo "$((${1#0} * 3600 + ${2#0} * 60 + ${3#0}))" ${X#0}Jest taśmy prowadzące 0s w niektórych muszli jak bash, dashi poshpowodują problemy z 09(gdzie powłoka uskarża się, że był nieprawidłowy numer ósemkowa). Stéphane Chazelas źródło Bardzo sprytne i dobre wykorzystanie eval Ulrich Dangel Wolałbym użyć czegoś w ten sposób:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight )) x-yuri 7 Nie ma potrzeby używania wyrażeń arytmetycznych, wystarczy użyć czystej daty: date -d "1970-01-01 UTC $(date +%T)" +%s Ipor Sircer źródło Świetna odpowiedź, powinna być najwyższa. Leopoldo Sanczyk 1 Na Mac brew install coreutilsi wymienić datezgdate Connor McCormick 2 Opierając się na bash, uzyskaj aktualny czas w milisekundach od północy , w systemie GNU, możesz to zrobić w następujący sposób: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui źródło 2 Chcesz się upewnić, że tego nie zrobisz o 23:59:59 Stéphane Chazelas I do konwersji:date -d @$seconds choroba
14 Aby uniknąć warunków wyścigu, nadal zakładając datę GNU: eval "$(date +'today=%F now=%s')" midnight=$(date -d "$today 0" +%s) echo "$((now - midnight))" Dzięki zshmożesz to zrobić wewnętrznie: zmodload zsh/datetime now=$EPOCHSECONDS strftime -s today %F $now strftime -rs midnight %F $today echo $((now - midnight)) Przenośnie, w strefach czasowych, w których nie ma przełącznika czasu letniego, możesz: IFS=: set -- $(date +%T) echo "$((${1#0} * 3600 + ${2#0} * 60 + ${3#0}))" ${X#0}Jest taśmy prowadzące 0s w niektórych muszli jak bash, dashi poshpowodują problemy z 09(gdzie powłoka uskarża się, że był nieprawidłowy numer ósemkowa). Stéphane Chazelas źródło Bardzo sprytne i dobre wykorzystanie eval Ulrich Dangel Wolałbym użyć czegoś w ten sposób:IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight )) x-yuri 7 Nie ma potrzeby używania wyrażeń arytmetycznych, wystarczy użyć czystej daty: date -d "1970-01-01 UTC $(date +%T)" +%s Ipor Sircer źródło Świetna odpowiedź, powinna być najwyższa. Leopoldo Sanczyk 1 Na Mac brew install coreutilsi wymienić datezgdate Connor McCormick 2 Opierając się na bash, uzyskaj aktualny czas w milisekundach od północy , w systemie GNU, możesz to zrobić w następujący sposób: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui źródło 2 Chcesz się upewnić, że tego nie zrobisz o 23:59:59 Stéphane Chazelas I do konwersji:date -d @$seconds choroba
7 Nie ma potrzeby używania wyrażeń arytmetycznych, wystarczy użyć czystej daty: date -d "1970-01-01 UTC $(date +%T)" +%s Ipor Sircer źródło Świetna odpowiedź, powinna być najwyższa. Leopoldo Sanczyk 1 Na Mac brew install coreutilsi wymienić datezgdate Connor McCormick 2 Opierając się na bash, uzyskaj aktualny czas w milisekundach od północy , w systemie GNU, możesz to zrobić w następujący sposób: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui źródło 2 Chcesz się upewnić, że tego nie zrobisz o 23:59:59 Stéphane Chazelas I do konwersji:date -d @$seconds choroba
2 Opierając się na bash, uzyskaj aktualny czas w milisekundach od północy , w systemie GNU, możesz to zrobić w następujący sposób: $ now=$(date '+%s') $ midnight=$(date -d 'today 00:00:00' '+%s') $ echo $(( now - midnight )) 53983 fedorqui źródło 2 Chcesz się upewnić, że tego nie zrobisz o 23:59:59 Stéphane Chazelas I do konwersji:date -d @$seconds choroba
Odpowiedzi:
Aby uniknąć warunków wyścigu, nadal zakładając datę GNU:
Dzięki
zsh
możesz to zrobić wewnętrznie:Przenośnie, w strefach czasowych, w których nie ma przełącznika czasu letniego, możesz:
${X#0}
Jest taśmy prowadzące 0s w niektórych muszli jakbash
,dash
iposh
powodują problemy z09
(gdzie powłoka uskarża się, że był nieprawidłowy numer ósemkowa).źródło
IFS=: read -r today now <<< $(date +%F:%s); midnight=$(date -d "$today 0" +%s); echo $(( now - midnight ))
Nie ma potrzeby używania wyrażeń arytmetycznych, wystarczy użyć czystej daty:
źródło
brew install coreutils
i wymienićdate
zgdate
Opierając się na bash, uzyskaj aktualny czas w milisekundach od północy , w systemie GNU, możesz to zrobić w następujący sposób:
źródło
date -d @$seconds