【问题标题】:datetime is coming instead of date in pythondatetime 即将到来,而不是 python 中的 date
【发布时间】:2015-10-29 08:43:59
【问题描述】:

这是我的创建方法

def create(cls, data):
        try:
            cls.format_date_only_element(data,'start_date')
            cls.format_date_only_element(data,'end_date')            
            promotion = cls(**data)      
            promotion.save()
            return True
        except:
            return False

在上面的代码中formate_date_only_element方法是

 _date_only_format = '%Y-%m-%d'
 def format_date_only_element(cls,data,date_field):        
        for r in data:        
            if date_field in r:                                
                pdate =  datetime.strptime(data[date_field], cls._date_only_format)
                data[date_field]=pdate
                break

我的创建处理程序是 def post(自我): self__uploads = 无 form = forms.CreatePromotion(self.request.POST) count = Promotion.all().count() 如果计数==0: 计数=1 form.display_order.choices = [(item+1, item+1) for item in range(count)] image = self.get_uploads('image')
video = self.get_uploads('video')
如果 form.validate(): 数据 = form.data 日志信息(数据) upload_url = blobstore.create_upload_url('/admin/promotion/create') 尝试: datetime.strptime(data['start_date'], '%Y-%m-%d') datetime.strptime(data['end_date'], '%Y-%m-%d') 除了ValueError: self.session.add_flash("日期格式不正确,应该是 YYYY-MM-DD",key='error') return self.render_response("/admin/promotion/create.html", form=form, upload_url=upload_url)

        supp_code=data['supplier_code']
        supplier_obj=SupplierMaster.get_by_code(supp_code)

        supp_code1=data['supplier_code']
        supplier_obj1=Supplier.get_by_code(supp_code1)

        if not supplier_obj and supplier_obj1 is None:
            self.session.add_flash('Supplier code does not exist',key='error')
            return self.render_response("/admin/promotion/create.html", form=form, upload_url=upload_url)

        else:
            is_video = bool(video)
            is_image = bool(image)
            if not is_image and not is_video:                
                self.session.add_flash("Please select a video or image",key='error')                
                return self.render_response("/admin/promotion/create.html", form=form, upload_url=upload_url)
            else:
                del data['video']
                del data['image']                
                if is_video:
                    if video[0].content_type.startswith('video'):
                        log.info("is video")
                        data['video'] = video[0]
                    else:
                        log.info("is_video")
                        self.session.add_flash("Please select a video or image",key='error')
                        return self.redirect("/admin/promotion/create") 
                if is_image:
                    if image[0].content_type.startswith('image'):
                        log.info("is image")
                        data['image'] = image[0]
                    else:
                        log.info("is_image")
                        self.session.add_flash("Please select a video or image",key='error')
                        return self.redirect("/admin/promotion/create")

                flag = Promotion.create(data)
                if flag is True:
                    self.session.add_flash('Promotion created successfully!',key='success')
                else:
                    self.session.add_flash("Error occured in creating Promotion",key='error')
            return self.redirect("/admin/promotions")
    else:
        upload_url = blobstore.create_upload_url('/admin/promotion/create')
        return self.render_response("/admin/promotion/create.html", form=form, upload_url=upload_url)

它的输出类似于(2015-10-29 00:00:00),但我只希望输出日期而不是日期时间,提前致谢

【问题讨论】:

  • 你如何检查输出?您是否在任何地方将日期时间转换为字符串?
  • data[date_field] 的值是多少,例如是字符串。 “2015-10-22”然后代码为您提供正确的输出。如果要将日期时间对象转换为字符串,则应使用 datetime.strftime(datetime_object, "%Y-%m-%d"),这将为您提供所需的结果。
  • 是的 prateek 它给出了“2015-10-22”,但是当涉及到创建方法时,如 ...flag = Promotion.create(data) 这里显示“2015-10-22 00-00 -00"
  • @Uday: 能否请您发布您的促销模型课程。我认为您已将日期字段提到为 DateTimeField 这就是它给出日期时间字符串的原因。
  • 是的 prateek 我在模型中提到了 datetime 字段,但我使用的是 strip

标签: python


【解决方案1】:

您可以在 datetime 对象上使用.date() 来获取日期 -

pdate =  datetime.strptime(data[date_field], cls._date_only_format).date()

【讨论】:

  • 再次给出日期时间而不是日期
猜你喜欢
  • 2011-01-12
  • 2011-12-30
  • 2016-09-05
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2020-01-06
相关资源
最近更新 更多