问题描述
我想将UTC时间转换为本地时间
我的settings.py
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
我的模型。py
class UnauthorizedAccess(models.Model):
UnauthorizedAccessId = models.AutoField(primary_key=True,db_column='UnauthorizedAccessId')
Camera = models.ForeignKey(Camera,on_delete=models.CASCADE,db_column='CameraId')
AccessTime = models.DateTimeField()
Description = models.CharField(max_length=250)
class Meta:
db_table = "UnauthorizedAccess"
views.py
from datetime import date,datetime
from django.utils import timezone
from tzlocal import get_localzone
import pytz
@api_view(['POST'])
@permission_classes([])
def push_notification(request):
cam_id = request.data.get("CameraId").strip()
camera_ob = Camera.objects.get(CameraId=cam_id)
unauthorized_entry = UnauthorizedAccess(
Camera=camera_ob,AccessTime=timezone.now(),Description=unauthorized_access,)
unauthorized_entry.save()
return Response({msg: validation["FDP25"]},status=status.HTTP_200_OK)
except Exception as ex:
logging.getLogger("error_logger").exception(repr(ex))
return Response({msg: validation["FDP23"]},status=status.HTTP_400_BAD_REQUEST)
在保存时我尝试了AccessTime = datetime.now(tz = timezone.utc)和AccessTime = datetime.now() 现在我正在使用timezone.now()
我试图检索我的数据
我的views.py 从datetime导入日期开始,datetime 从django.utils导入时区 从tzlocal导入get_localzone 导入pytz
@api_view(['GET'])
@permission_classes([])
def notification(request):
try:
unauthorizedaccess_details = list()
tz = get_localzone()
notification_ob = UnauthorizedAccess.objects.all().order_by('-AccessTime')[:50]
for ob in notification_ob:
dev = Device.objects.get(Camera=ob.Camera)
tz = get_localzone()
localtz = ob.AccessTime.replace(tzinfo=pytz.utc).astimezone(tz)
date_time = localtz.strftime("%d/%m/%Y %I:%M:%S %p")
tz1 = ob.AccessTime.replace(tzinfo=pytz.UTC)
localtz1 = tz1.astimezone(timezone.get_current_timezone())
date_time1 = localtz1.strftime("%d/%m/%Y %I:%M:%S %p")
unauthorizedaccess_info = {
'id': ob.UnauthorizedAccessId,'DeviceName': dev.DeviceName,'Date': date_time,'Date1': date_time1,'Date2': ob.AccessTime,'Date3': ob.AccessTime.strftime("%d/%m/%Y %I:%M:%S %p"),'Access': ob.Description,'Type': '1'
}
unauthorizedaccess_details.append(unauthorizedaccess_info)
return JsonResponse(unauthorizedaccess_details,safe=False,status=status.HTTP_400_BAD_REQUEST)
我尝试了这些方法来获取正确的时间
当我使用本地主机作为url运行此程序时,我得到了这个答案(我仅显示1个设置数据作为示例)
{
"id": 124,"DeviceName": "FDP01","Date": "18/08/2020 06:14:43 PM","Date1": "18/08/2020 12:44:43 PM","Date2": "2020-08-18T12:44:43.127Z","Date3": "18/08/2020 12:44:43 PM","Access": "Unauthorized entry","Type": "1"
}
然后使用我的服务器网址获取的相同数据是
{
"id": 125,"Date": "18/08/2020 12:49:05 PM","Date1": "18/08/2020 12:49:05 PM","Date2": "2020-08-18T12:49:05.675Z","Date3": "18/08/2020 12:49:05 PM","Type": "1"
}
我希望服务器提供以下格式的答案:“ Date”:“ 18/08/2020 06:14:43 PM”(date1和Date2是我尝试过的代码示例)
使用服务器网址日期未转换为我的本地时区
- 我如何获得正确的日期?
- 我犯了什么错误?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)