Programuję mały, mały program, aby pobrać odpowiedni zestaw plików do użycia przez pakiet oprogramowania meteorologicznego. Pliki mają format: YYYYMMDD
i YYYYMMDD HHMM
w UTC. Chcę poznać aktualny czas w UTC w C++ i jestem na Ubuntu. Czy istnieje prosty sposób na zrobienie tego?Jak uzyskać czas UTC
Odpowiedz
Wysokiej klasy odpowiedź w C++ to użycie funkcji Boost Date_Time.
Ale to może być przesada. Biblioteka C ma to, czego potrzebujesz w strftime
, strona podręcznika ma przykład.
/* from man 3 strftime */
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char outstr[200];
time_t t;
struct tm *tmp;
const char* fmt = "%a, %d %b %y %T %z";
t = time(NULL);
tmp = gmtime(&t);
if (tmp == NULL) {
perror("gmtime error");
exit(EXIT_FAILURE);
}
if (strftime(outstr, sizeof(outstr), fmt, tmp) == 0) {
fprintf(stderr, "strftime returned 0");
exit(EXIT_FAILURE);
}
printf("%s\n", outstr);
exit(EXIT_SUCCESS);
}
dodałem pełny przykład na podstawie tego, co jest w podręczniku stronie:
$ gcc -o strftime strftime.c
$ ./strftime
Mon, 16 Dec 13 19:54:28 +0000
$
Przykład strony podręcznika strftime używa czasu lokalnego(). OP będzie potrzebował funkcji gmtime(), aby uzyskać czas UTC. – nos
Użycie strftime wydaje się być najlepiej wyglądającą opcją. Dzięki. W razie potrzeby mogę ręcznie przekonwertować UTC, ale chcę sprawdzić, co powiedział nos. –
@nos Jak mogę uwzględnić DST przy użyciu gmtime()? –
Można użyć gmtime:
struct tm * gmtime (const time_t * timer);
Convert time_t to tm as UTC time
Oto przykład:
std::string now()
{
std::time_t now= std::time(0);
std::tm* now_tm= std::gmtime(&now);
char buf[42];
std::strftime(buf, 42, "%Y%m%d %X", now_tm);
return buf;
}
ideone link: http://ideone.com/pCKG9K
Powinieneś użyć 'std :: strftime (buf, sizeof buf, ...)'. Warto również zauważyć, że 'return buf;' jest poprawny tylko dlatego, że wartość jest niejawnie przekonwertowana na 'std :: string'; jeśli 'now' zwróci' char * '(jak prawdopodobnie w C), zwrócisz wskaźnik do lokalnego obiektu, co jest dużym nie-nie. –
Uwaga: jeśli to możliwe, możesz zamiast tego używać 'gmtime_r', który, podczas gdy jest niestandardowy, jest zarówno bezpieczny dla uczestników, jak i dla danych. –
@MatthieuM. masz rację, normalnie mam sprawdzić istnienie gmtime_r. Myślałem, że to była przesada dla tej odpowiedzi. Dzięki za przydatne opinie. – nurettin
- 1. Jak uzyskać czas utc w jQuery datetimepicker
- 2. Jak dokładnie uzyskać aktualny czas UTC przez strtotime?
- 3. Jak uzyskać czas UTC "północy" dla danej strefy czasowej?
- 4. Jak skonwertować czas lokalny na UTC?
- 5. Jak przekonwertować datetime.date.today() na czas UTC?
- 6. Czy System.currentTimeMillis reprezentuje czas UTC?
- 7. Jak wyświetlić czas UTC jako czas lokalny na stronie internetowej?
- 8. Konwersja czas UTC do czasu pacyficznego
- 9. Jak przekonwertować ciąg daty UTC na czas lokalny (systemTimeZone)
- 10. Asp.net WebAPI deserializes ciąg czas UTC na czas lokalny
- 11. Joda Czas: Konwertuj UTC na lokalny
- 12. Java: Jak przekonwertować sygnaturę czasową UTC na czas lokalny?
- 13. Konwersja czasu lokalnego do UTC Czas w ulu
- 14. Określa czas rozpoczęcia i zakończenia bieżącego dnia (UTC -> EST -> UTC); Python
- 15. jak przekonwertować czas serwera na czas lokalny
- 16. Konwersja UTC na czas lokalny zwraca dziwny wynik
- 17. noda czas iana mapowanie Etc/UTC na strefę czasową Windows
- 18. datetimepicker getDate, aby powrócić Data/czas w formacie UTC
- 19. Mongoza konwertująca zapisane daty UTC na czas lokalny?
- 20. Konwertuj strefę czasową UTC w postgresql na EST (czas lokalny)
- 21. Grails zapisuje datetime jako czas UTC, ale odczytuje go jako czas serwera lokalnego?
- 22. Przypisanie czasu UTC w VBScript
- 23. Jak uzyskać milisekundy od północy UTC w C?
- 24. Jak uzyskać ciąg znaków UTC w języku Python?
- 25. Jak uzyskać przesunięcie UTC w sekundach w Androidzie
- 26. Jak uzyskać datę modyfikacji pliku w UTC z Python
- 27. Czas konwersji Jazime czas strefy czasowej na millis
- 28. Jak uzyskać czas trwania pliku wideo?
- 29. Python: Jak uzyskać czas z obiektu datetime.timedelta?
- 30. Jak uzyskać czas uruchamiania systemu Android?
Czy możesz powtórzyć pytanie: czy chcesz _reformatować nazwy plików z UTC na lokalny? Czy chcesz _access_ aktualny czas jako UTC? –
Po prostu uzyskaj dostęp do bieżącego czasu w UTC, przepraszam za zamieszanie, będę edytować pytanie. –