如何获取不同时区的当前时间?例如,我需要知道新加坡的当前时间,因为我的系统设置为PT时间。
答案 0 :(得分:6)
一个非常古老的问题的新答案。
鉴于C ++ 11或C ++ 14编译器和this timezone library,新加坡目前的时间是:
views.py:
shift_table=[]
for project in calendar_projects:
shift_table.append([])
project_branches = project.branches.all()
for i, week in enumerate(month):
for day in week:
shift_table[-1].append(
CreateShiftCalendarForm(initial={'date': day}, branch_choices=project_branches))
forms.py:
CreateShiftCalendarForm(EditShiftCalendarForm):
class Meta(ShiftForm.Meta):
fields = ('project_branch', 'date') + ShiftForm.Meta.fields
widgets = {'date': forms.HiddenInput(), 'length': forms.NumberInput(attrs={'step': 'any'}), 'project_branch': forms.Select()}
def __init__(self, *args, **kwargs):
branch_choices = kwargs.pop('branch_choices', ProjectBranch.objects.none())
super(CreateShiftCalendarForm, self).__init__(*args, **kwargs)
self.fields['project_branch'].queryset = branch_choices
self.fields['project_branch'].empty_label = None
只为我输出:
#include "tz.h"
#include <iostream>
int
main()
{
using namespace std::chrono;
std::cout << date::make_zoned("Asia/Singapore", system_clock::now()) << '\n';
}
这给出了当前使用的本地日期,时间和缩写。它基于2015-08-19 05:25:05.453824 SGT
库和IANA timezone database。
<chrono>
返回UTC时区的时间戳。该程序查找“亚洲/新加坡”的时区信息,并将UTC时间戳转换为表示该位置的当地时间和当前时区的对。
上述程序独立于计算机的当前时区。
答案 1 :(得分:3)
一种实现方式是使用time
以UTC格式获取当前时间,然后将TZ
环境变量操作到目标时区。然后使用localtime_r
转换为该时区的当地时间。
答案 2 :(得分:1)
尽可能使用UTC(GMT)。
如果您需要(例如)打印要转到其他时区的报告,请使用SystemTimeToTzSpecificLocalTime()之类的内容进行本地化。
答案 3 :(得分:0)
您可以转换为GMT,然后转换为您想要的任何时区。