当前位置: 首页 > 面试题库 >

上周五如何获得?

糜俊彦
2023-03-14
问题内容

下面的代码应在上周五的16:00:00返回。但它返回上周的星期五。如何解决?

now = datetime.datetime.now()
test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4, weeks=-1))
test = test.replace(hour=16,minute=0,second=0,microsecond=0)

更新。我现在使用以下方法-最好的方法吗?

now = datetime.datetime.now()
if datetime.datetime.now().weekday() > 4:
    test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4))
else:
    test = (now - datetime.timedelta(days=now.weekday()) + timedelta(days=4, weeks=-1))
test = test.replace(hour=16,minute=0,second=0,microsecond=0)

Upd2。仅举一个例子。假设今天是 2012年10月5日 。如果当前时间等于或小于 16:00 ,则应返回 2012年9月28日 ,否则返回
201210月5日


问题答案:

与链接的问题一样,您需要使用datetime.date对象而不是datetime.datetime。要获得datetime.datetime最终结果,可以使用datetime.datetime.combine()

import datetime

current_time = datetime.datetime.now()

# get friday, one week ago, at 16 o'clock
last_friday = (current_time.date()
    - datetime.timedelta(days=current_time.weekday())
    + datetime.timedelta(days=4, weeks=-1))
last_friday_at_16 = datetime.datetime.combine(last_friday, datetime.time(16))

# if today is also friday, and after 16 o'clock, change to the current date
one_week = datetime.timedelta(weeks=1)
if current_time - last_friday_at_16 >= one_week:
    last_friday_at_16 += one_week


 类似资料:
  • 问题内容: 如何找出上一个(上一个)“星期五”或指定日期之后的其他日期的日期? 问题答案: 我不会给出答案(请先尝试一下!),但是,也许这些技巧可以为您提供帮助。 您首先需要确定您所在的星期几。您可能想看一下Java的Calendar类,以了解如何做到这一点。 确定日期后,请考虑模数运算符以及如何使用该运算符向后移动以从当前所在的日期开始寻找所需的前一天。(请记住,一周是7天,一周中的每一天在这7

  • 我有一个任务的问题。我必须得到下周五13日,因为给定的日期使用LocalDate。 你们有什么想法吗?

  • 一个人怎么能运行一个cron作业为每周一,周三和周五晚上7点?

  • 我需要使用获得给定日期后的下周五13号。 如何实施?

  • 我有这样的复选框: 例如,如果选择周一、周三、周五、周六、周日。返回周一、周三、周五-周日 例如,如果选择Sat, Sun.返回Sat-Sun 例如,如果选择Mon, Tue, Thu, Sat, Sun返回Mon, Tue, Thu, Sat, Sun 我该如何实现这一点?这可能吗?

  • 问题内容: 如何使用Joda-Time API 获得下一个星期五。 在今天的是。在我看来,您必须决定本周星期五之前还是之后。请参阅此方法: 是否可以缩短时间或使用单缸衬套? PS:请不要建议我使用JDK的日期/时间。 Joda-Time是一个更好的API。 Java 8引入了更好的java.time包(Tutorial)。 问题答案: 随着java.time内置到Java 8及更高版本(框架教程)