Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2021 14:19:26

Typical_beginer
Зарегистрирован: 2020-12-29
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Как подсчитать даты между собой и результат присвоить к объекту класса?


   import datetime
           from datetime import datetime
           import time
            def fastorders(self):         
            dateformat='%d.%m.%Y'
            for bookorder in bookorders:
                  dat1=datetime.datetime.strptime(bookorder.dateorder,dateformat)
                  dat2=datetime.datetime.strptime(bookorder.datetakeorder,dateformat)
                  difdayz=dat2-dat1
                  dayzstr=str(difdayz)
                  if dayzstr== '1' or '2':
                        print(bookorder.surnm, bookorder.dateorder, bookorder.datetakeorder)

Что я подразумеваю под этим кодом?
Прохожу циклом по всей коллекции объектов класса(bookorder, bookorders рабочие)
У меня есть 2 даты в строковом варианте,я хочу их перевести в формат время-дата,подсчитать разницу дней/
Затем полученный результат я опять преобразовываю в строку.
Позже я с помощью условия определяю - если количество дней будет 1 или 2 то выводить конкретную запись как “Быстрый заказ”.

Проблема состоит в том,что полученное значение надо как-то связать с записью класса.
Например,на скриншоте видно что в объекте - Иванов 2 даты и между ними 1 день.По идее это и считается быстрым заказом,но я условный оператор применил,а как дальше у меня небольшой тупик,не могу понять что сделать дальше.

Создавать отдельный атрибут,в котором будут хранится количество подсчитанных дней?
По моему можно и без этого обойтись или всё же его создавать.

Прикреплённый файлы:
attachment stackstack.jpg (125,3 KБ)

Офлайн

#2 Янв. 23, 2021 17:18:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

Как подсчитать даты между собой и результат присвоить к объекту класса?

Typical_beginer
но я условный оператор применил
  
if dayzstr== '1' or '2':
Вот это “применение” - это неправильная конструкция. Операция or в Python работает не так, как ты думаешь; она там гораздо умнее и включает в себя дополнительный функционал (имеет собственное значение). Поэтому придётся тебе книжку какую-нибудь почитать по питону для самых маленьких. Такие глупые ошибки могут быть только результатом того, что человеку вдруг подумалось, что он может до всего догадаться сам, потому что, по его наивному мнению, питон - простой язык, пригодный буквально для олигофренов. Это не так.

В общем, если бы ты сделал всё правильно в плане условия, то вот эти вещи, которые получились, нужно было бы оформить в словарь и вернуть этот словарь наружу, где с ним уже будет делать дальше что-то объект, который и должен решать, что делать с этими данными.

Это я всё к тому говорю, что ты не понимаешь, как использовать объектно-ориентированное программирование даже близко, и с чего-то взял, что прямо с него можно программирование изучать. Однако все эти глупые вопросы - про области видимости, что куда сохранять и как куда выводить, как раз и говорят об обратном. Ты не знаешь основ, а взялся за продвинутую технологию, будто бы, не зная, что такое функция, можно изучать, что такое метод.

Заканчивай заниматься глупостями, прочитай книжку одну, вторую и так далее. Там ты сам уже поймёшь, какую ересь ты писал до их прочтения.



Отредактировано py.user.next (Янв. 23, 2021 17:19:10)

Офлайн

#3 Янв. 23, 2021 17:43:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как подсчитать даты между собой и результат присвоить к объекту класса?

Вопрос, а накой вы храните в классе даты в строковом формате? Зачем вы переводите число в строку, и потом сравниваете со строками, если вам нужно числа? А если вам нужна будет разница в месяц, вы будете 31 условий проверять? а если в год?
Что мешает вычеркнуть dayzstr=str(difdayz) сделать вот так :

 if dayzstr <=2:
И с чего вы решили что разница двух дат будет int? вы отладчиком если не пользуетесь , хотябы print-ом посмотрите что там у вас выходит. Результат вычитания двух дат будет типа timedelta.
почитайте про логические операторы чтоле?: https://younglinux.info/python/operators.php
и про операции с датами: https://metanit.com/python/tutorial/8.2.php



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Янв. 23, 2021 18:14:34)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version