Wiesz, że interfejsy API zegara / czasu twojego języka są zepsute i wcale nie są wiarygodne.
Dlatego nie wolno używać żadnego wbudowanego interfejsu API do uzyskiwania dostępu do systemowej daty / godziny.
Ale wiesz również, że zdolność twojego języka do wykonywania obliczeń matematycznych i zachowywania wartości daty / godziny w zmiennej są prawidłowe.
Napisz program, który drukuje bieżącą datę / godzinę bez wywoływania interfejsów API daty / godziny / zegara. Na przykład DateTime.Now
, GetDate()
i podobne funkcje nie są dozwolone.
Odpowiedź z większością głosów wygranych.
W przypadku remisu wygrywa odpowiedź z większą precyzją (dokładność do sekund, potem milisekund, następnie mikrosekund i tak dalej).
popularity-contest
drobnoustrój
źródło
źródło
print(input("Please enter the current time"))
.Odpowiedzi:
Jawa
Prawie wszystkie obecne rozwiązania zakładają, że lokalny / zdalny komputer nie kłamie na temat aktualnego czasu (czy uważasz, że T-600 również?).
Kluczowym punktem w obliczaniu czasu jest zaufanie do czystej natury .
Ta aplikacja na Androida prosi użytkownika o zrobienie zdjęcia nieba i przewidywanie bieżącego czasu z wyjątkową precyzją:
Wyniki:
źródło
"There is no sky. Everyone's going to die"
: DRubin
Bądźmy szczerzy: czas zmienia się tylko wtedy, gdy coś jest publikowane na stackoverflow.com ;)
Skrypt wyodrębnia czas etykiety „XYs ago” w najwyższym pytaniu.
Wynik:
źródło
Grzmotnąć
Lubię to? (wymaga
wget
igrep
)Dane wyjściowe otrzymałem kilka minut temu:
Albo to? (wymaga
wget
ieog
)Dane wyjściowe otrzymuję teraz: (Zdjęcie xkcd )
mapa świata ze strefą czasową http://c.xkcd.com/redirect/comic/now
źródło
http://c.xkcd.com/redirect/comic/now
daje obraz, podczas gdyhttp://xkcd.com/now
daje stronę internetową.sh / coreutils
Wypisuje datę w nieco niestandardowym formacie:
YYYY-MM-DD hh:mm:ss.nanoseconds +timezone
chociaż myślę, że może to zależeć od ustawień regionalnych.
źródło
cd $(mktemp -d)
set mtime to this
syscall dzieje wszędzietouch
jest to funkcja / polecenie biblioteczne, ponieważ ma pożądany efekt uboczny.PHP
Wykorzystaj fakt, że
uniqid()
zwraca identyfikator na podstawie czasu.Podczas mojego testu, powrócił:
Year=2014 Days=79 Hours=18 Minutes=9 Seconds=49
.Nie wiem, czy mogę
date
poprawnie sformatować, więc przekonwertowałem go ręcznie.źródło
uniqid
uniqid
użyj interfejsu API niskiego poziomu czasu, ale nawet jeśli poprosisz o czas z zewnętrznego serwera, gdzieś pojawi się interfejs API niskiego poziomu ...uniqid()
został zepsuty, zanim jeszcze zadano to pytanie. tylko interfejsy API zegara / czasu są zepsute w tym pytaniuDNS
Czy nie ufamy tylko własnej maszynie? Jeśli tak, czy to się liczy?
Jeśli to się nie liczy, wyodrębnienie czasu z aktualizacji DNS zdecydowanie:
źródło
Grzmotnąć
Aby być zawsze absolutnie precyzyjnym i poprawnym:
lub motywowanie:
źródło
absolutely precise
, uruchomienie komendy zajmie trochę czasu.echo "Then"
działa dla tego wymagania.curl - z dokładnością do dowolnej częstotliwości pingowania
źródło
Pyton
Na pewno nie wiesz, która jest godzina?!? Oto przypomnienie:
źródło
Python 2
Tak więc zegar jest poprawny, ale interfejs API czasu jest zamknięty, prawda? Dlaczego nie sprawdzić surowego znacznika czasu systemu plików. Zamiast tworzyć plik testowy, po prostu używamy własnego znacznika czasu dostępu, ponieważ skrypt musi zostać odczytany, aby uruchomić (nawet jeśli został skompilowany). Dokładnie do sekundy. *
Należy to zapisać i uruchomić jako
t.py
. Alternatywnie, pobierz nazwę skryptu w czasie wykonywania za pomocąinspect.getfile(inspect.currentframe())
Uwaga * Czasami dokładne do poprzedniej sekundy.
źródło
t.pyc
czyt.pyo
zamiast tego?.py
pliku, nawet jeśli odpowiedni.pyc
jest obecny. To zawsze działa poprawnie.Rubin
HTTP, ale tylko przy użyciu metadanych odpowiedzi.
źródło
ps
Nie możesz
ps
podać godziny? To może!Proces jest uruchamiany w tle i
ps
wskazuje godzinę rozpoczęcia procesu. Ponieważ proces rozpoczął się w tle, czas rozpoczęcia procesu jest prawie taki sam jak teraz.Ponadto zaletą jest to, że czas jest uzyskiwany w lokalnej strefie czasowej. Nie potrzebujesz też połączenia z Internetem!
źródło
vba
ponieważ nie powinienem.
użyj,
?DateTime
aby użyć lub jeśli umieścisz go w programie Excel, a następnie=DateTime()
będzie działać jako formuła.Data / czas są zwracane w GMT - pozostawiam to jako ćwiczenie na próżno, aby przekonwertować go z ciągu na czas lokalny
źródło
Bash +
last
+head
+cut
Dokładnie do drugiego.
last
używa pliku dziennika/var/log/wtmp
EDYCJA: Dodano,
head
aby ograniczyć tylko do jednej linii.EDYCJA: Działa na Linux Mint 13 Cinnamon 64-bit, ale wygląda na to, że zależy to od twojej dystrybucji.
sysvinit-utils
(która zapewnialast
) wersja jest2.88dsf-13.10ubuntu11.1
last
odczytywana z/var/log/wtmp
(w moim przypadku), więc wyniki zależą od tego pliku dziennika. Zobacz komentarze poniżej.EDYCJA: Najwyraźniej zależy to od czasu pracy systemu, więc możesz zobaczyć dowód tutaj http://imgur.com/pqGGPmE
źródło
last
mówi: „Ponowne uruchomienie pseudo użytkownika loguje się przy każdym ponownym uruchomieniu systemu.” (I nawet to nie wydaje się poprawne tutaj: pastebin.com/ArUaBcuY )-F
drukuje pełne czasy logowania i wylogowania . Ponieważ bieżący użytkownik jest nadal zalogowany, czas wylogowania jest bieżącym czasem. To jest na Linux Mint 13 cynamon 64-bitowy. To może być zależne od regionu, ale wątpię.Pyton
Uzyskanie precyzji nanosekundowej byłoby trudne, chyba że zwracany czas był oparty na tym, kiedy program kończy działanie, a nie na początku. Mając to na uwadze, bardziej sensowne jest obliczanie czasu na podstawie zakończenia programu. Oznacza to, że powinniśmy kontrolować, kiedy program przestanie działać, aby uzyskać dodatkową precyzję.
Zauważ, że zakłada to, że podczas gdy zegar pytona jest przerywany, zegar uderzenia nie jest, lub że zegar uderzenia przynajmniej wie, jaki jest dzień. Jeśli nie, możemy zamiast tego użyć tego:
Może być jednak nieco wolniejszy. Nie testowałem tego.
źródło
BrainFuck
Wynik:
Myślę, że wyświetla czas w Denver w momencie pisania. Wyjaśnienie algorytmu tutaj w tym filmie Alana Jacksona .
źródło
Rubin
Nie używa interfejsu API zegara / czasu języka.
źródło
Podobał mi się pomysł „czytania z serwera czasu”. Poprawiłem jednak formatowanie i dodałem kilka miast dla zabawy.
PHP
źródło
Grzmotnąć
Dzięki dzięki The Goon Show . (Również ma rację dwa razy dziennie!)
źródło
C / WinAPI
To powoduje założenie, że moje własne wywołania API do zapytania zegara są zepsute, ale sam system może poprawnie pracować z czasem.
Pomysł polega na utworzeniu pliku tymczasowego i odczytaniu czasu utworzenia, który moim zdaniem w systemie plików NTFS jest dokładny do 10 ms. Zauważ, że formatowanie danych wyjściowych jest niepewne, ale dzieje się tak, ponieważ jestem leniwy.
Dane wyjściowe na moim komputerze właśnie teraz:
Time is 10:39:45.790
źródło
// NO ERROR CHECKING - that's left as an exercise for the reader
- Lepiej tego nie widzę w kodzie produkcyjnymPartia
Zapisuje pustą linię do pliku wsadowego (samego), a następnie sprawdza czas ostatniego zapisu pliku.
źródło
HTML, CSS i JavaScript / jQuery
Ok, więc wiem, że technicznie nie jest to program i prawdopodobnie nie spełnia kryteriów, ale za kilka godzin będzie to najdokładniejszy zegar na świecie!
CSS
HTML
jQuery
Na początku miałem zamiar zrobić
while(true)
pętlę, ale potem przypomniałem sobie, że nie chcę zawieszać żadnych przeglądarek ...Oto skrzypce w akcji: http://jsfiddle.net/E7Egu/
źródło
Emacs Lisp
Sprawa google została wykonana, ale nie w emacs!
źródło
node.js / JavaScript
źródło
JavaScript
Ponieważ interfejs API zegara / czasu jest zepsuty, używam interfejsu API Performance, aby uzyskać czas. Następnie
Date
służy tylko do parsowania go do łańcucha.źródło
PHP:
Spowoduje to odczytanie czasu systemowego z dostępnego interfejsu wiersza poleceń.
Do tego celu służy operator wsteczny: uruchom polecenie.
Innym sposobem byłoby:
Który zawiera aktualny czas, w którym skrypt został wywołany.
źródło
Grzmotnąć
Trochę omija zasady, ale nigdy nie wywołuje funkcji czasu. Będzie jednak wyświetlać aktualny czas na wyjściu, a za każdym razem, gdy naciśniesz, wprowadź.
źródło
DO#
Ta bardzo dokładna metoda będzie działać - pod warunkiem, że uruchomisz program o godzinie 0: 00: 00,0000
źródło
Linux, większość powłok, na sprzęcie z RTC:
źródło
tr
? Może po prostu chceszpaste -d' ' /sys/class/rtc/rtc0/{date,time}
?Jawa
Wszyscy wiemy, że Java Date / Time API jest bezużyteczny i uszkodzony. Oto poprawka, która nie używa (przynajmniej bezpośrednio) żadnego z istniejących API. Obsługuje nawet sekundy przestępne! :) Dane wyjściowe są w UTC.
źródło