Найти - Пользователи
Полная версия: Как подсчитать даты между собой и результат присвоить к объекту класса?
Начало » Python для новичков » Как подсчитать даты между собой и результат присвоить к объекту класса?
1
Typical_beginer

   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 день.По идее это и считается быстрым заказом,но я условный оператор применил,а как дальше у меня небольшой тупик,не могу понять что сделать дальше.

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

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

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

Заканчивай заниматься глупостями, прочитай книжку одну, вторую и так далее. Там ты сам уже поймёшь, какую ересь ты писал до их прочтения.
PEHDOM
Вопрос, а накой вы храните в классе даты в строковом формате? Зачем вы переводите число в строку, и потом сравниваете со строками, если вам нужно числа? А если вам нужна будет разница в месяц, вы будете 31 условий проверять? а если в год?
Что мешает вычеркнуть dayzstr=str(difdayz) сделать вот так :
 if dayzstr <=2:
И с чего вы решили что разница двух дат будет int? вы отладчиком если не пользуетесь , хотябы print-ом посмотрите что там у вас выходит. Результат вычитания двух дат будет типа timedelta.
почитайте про логические операторы чтоле?: https://younglinux.info/python/operators.php
и про операции с датами: https://metanit.com/python/tutorial/8.2.php
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB