в вашем маршруте:
const routes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{
"path": "home",
"component": yourComponent (for example HomeComponent)
},
и в вашем HTML:
[routerLink]="['/Home']">
Простой posix: вызовите tzset, используйте tzname .
#include <ctime>
tzset();
time_zone_ptr zone(new posix_time_zone(tzname[localtime(0)->tm_isdst]));
Posix с glibc / bsd дополнениями:
time_zone_ptr zone(new posix_time_zone(localtime(0)->tm_zone));
Выше приведены сокращения часовых поясов Posix , определенные в терминах смещения от UTC и не стабильный во времени (есть более длинная форма, которая может включать переходы летнего времени, но не политические и исторические переходы).
ICU является переносимым и имеет логику для извлечения системного часового пояса как часового пояса Олсона (фрагмент sumwale ):
// Link with LDLIBS=`pkg-config icu-i18n --libs`
#include <unicode/timezone.h>
#include <iostream>
using namespace U_ICU_NAMESPACE;
int main() {
TimeZone* tz = TimeZone::createDefault();
UnicodeString us;
std::string s;
tz->getID(us);
us.toUTF8String(s);
std::cout << "Current timezone ID: " << s << '\n';
delete tz;
}
В Linux ICU является реализован так, чтобы быть совместимым с tzset, и рассматривает TZ
и /etc/localtime
, которые в современных системах Linux являются символической ссылкой, содержащей идентификатор Олсона ( - вот история ). Подробнее см. В uprv_tzname
.
Boost не знает, как использовать идентификатор Олсона. Вы могли бы построить posix_time_zone
, используя смещения не-DST и DST, но на этом этапе лучше продолжать использовать реализацию ICU. См. этот FAQ по повышению .
Ну, может быть, вы могли бы сделать это с помощью библиотеки GeoIP. Я знаю, что это немного излишне, но, поскольку большинство компьютеров в мире подключены к Интернету, вам, вероятно, это сойдет с рук. По словам парня, для которого я разрабатываю, точность была более 99%.
Примечание: это глупая идея. Я просто стремлюсь к ответам.