首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python中获取过去四个月的第一个和最后一个日期

在Python中获取过去四个月的第一个和最后一个日期,可以使用datetime模块来实现。

首先,导入datetime模块:

代码语言:python
复制
import datetime

然后,获取当前日期:

代码语言:python
复制
current_date = datetime.date.today()

接下来,计算过去四个月的日期。由于每个月的天数不同,我们需要处理一些特殊情况。首先,获取当前日期的年份和月份:

代码语言:python
复制
current_year = current_date.year
current_month = current_date.month

然后,计算过去四个月的年份和月份。如果当前月份大于四个月,则直接减去四个月;否则,需要向前借一年,并加上剩余的月份:

代码语言:python
复制
if current_month > 4:
    past_year = current_year
    past_month = current_month - 4
else:
    past_year = current_year - 1
    past_month = current_month + 8

接着,获取过去四个月的第一个日期。我们可以使用datetime模块中的date类来表示日期,通过指定年份、月份和日期来创建一个日期对象:

代码语言:python
复制
past_first_date = datetime.date(past_year, past_month, 1)

最后,获取过去四个月的最后一个日期。我们可以使用calendar模块来获取指定年份和月份的最后一天:

代码语言:python
复制
import calendar

_, last_day = calendar.monthrange(past_year, past_month)
past_last_date = datetime.date(past_year, past_month, last_day)

完整的代码如下:

代码语言:python
复制
import datetime
import calendar

current_date = datetime.date.today()
current_year = current_date.year
current_month = current_date.month

if current_month > 4:
    past_year = current_year
    past_month = current_month - 4
else:
    past_year = current_year - 1
    past_month = current_month + 8

past_first_date = datetime.date(past_year, past_month, 1)
_, last_day = calendar.monthrange(past_year, past_month)
past_last_date = datetime.date(past_year, past_month, last_day)

print("过去四个月的第一个日期:", past_first_date)
print("过去四个月的最后一个日期:", past_last_date)

这样,你就可以在Python中获取过去四个月的第一个和最后一个日期了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在排序数组查找元素第一个最后一个位置

在排序数组查找元素第一个最后一个位置 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。...刚刚接触二分搜索同学不建议上来就像如果用一个二分来查找左右边界,很容易把自己绕进去,建议扎扎实实写两个二分分别找左边界右边界 寻找右边界 先来寻找右边界,至于二分查找,如果看过704.二分查找就会知道...target下标(左边界)与第一个大于target下标(右边界); # 2、如果左边界<= 右边界,则返回 [左边界, 右边界]。...target下标 ,否则找到第一个大于target下标 if nums[middle] > target or (lower and nums[middle] >=...target下标leftBorder; # 2、在 nums 数组中二分查找得到第一个大于等于 target+1下标, 减1则得到rightBorder; # 3、如果开始位置在数组右边或者不存在

4.6K20

刷题2:在数组查找元素第一个最后一个位置

题目:给定一个整数数组 nums, 一个目标值 target。找出给定目标值在数组开始位置结束位置。...题目解析: 1.给定一个数组,确定一个数组, 数组是整数,那么我们可以知道,那么target也是整数。...2.要求target在数组开始位置结束位置,我们可以先找出来target在list里面的下标位置,把这些下标位置放到list里面,我们去取list里面的第一个元素最后一个元素,就是对应开始位置结束位置...那么我们就可以上手去实现我们代码了。 从这期开始,我们代码将用python java两个版本去实现,同时从两方面去提高我们,同时 也面向了两门语言学习者。...我们可以看到目前是没有发现问题。这样,python版本实现完毕, 接下来我们去看看,对应java版本是怎么实现

2K20

何在Node.js编写运行您第一个程序

实时应用程序(视频流或连续发送接收数据应用程序)在Node.js编写时可以更高效地运行。 在本教程,您将使用Node.js运行时创建第一个程序。...要在macOS或Ubuntu 18.04上安装它,请按照如何在macOS上安装Node.js创建本地开发环境步骤或在Ubuntu 18.04上如何安装Node.js“使用PPA安装”部分步骤进行操作...JavaScript基本知识,您可以在这里找到: 如何在JavaScript编码 第1步 - 输出到控制台 写一个“Hello,World!”...第二行打印存储在args第一个元素环境变量; 也就是说,用户提供第一个命令行参数。...第7步 - 查看多个环境变量 目前,应用程序一次只能检查一个环境变量。 如果我们可以接受多个命令行参数并在环境获取它们相应值,那将非常有用。

8.4K30

LeetCode-34-在排序数组查找元素第一个最后一个位置

# LeetCode-34-在排序数组查找元素第一个最后一个位置 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。...你算法时间复杂度必须是 O(log n) 级别。 如果数组不存在目标值,返回 [-1, -1]。...5,7,7,8,8,10], target = 6 输出: [-1,-1] # 解题思路 方法1、双指针暴力法(low): 特例判断: 当数组为空或数组长度为0时,直接返回[-1,1] 当数组长度为1时,判断第一个数字是否等于...target,等于则返回[0,0],否则返回[-1,-1] 初始化头尾指针 移动头指针,直到找到第一个等于target位置,如果找完了都没有找到,返回[-1,-1] 移动尾指针,直到找到最后一个等于target...,最后返回[start,end]即可 如果没有找到,返回[-1,-1] 方法3、递归分治(low): 通过二分查找切分数组寻找左右子数组target位置,迭代到只有一个,判断是否是目标值,返回一个都是当前

2.2K20

Leetcode No.34 在排序数组查找元素第一个最后一个位置

一、题目描述 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。 如果数组不存在目标值 target,返回 [-1, -1]。...-109 <= target <= 109 二、解题思路 使用二分法查找第一个位置,初始化两个变量low=0,hight=nums.length-1 1、当low>high时,表示没有找到,返回-1...nums[mid]时,说明目标值在左侧,往左侧递归查找,否则往右侧递归查找 查找最后一个位置同理,唯一不同是第4、5步 4、假如nums[mid]等于target且nums[mid]比相邻右侧元素小...mid-1]<nums[mid])){ return mid; } if(target<=nums[mid]){ //寻找第一个位置...mid]<nums[mid+1]){ return mid; } if(target>=nums[mid]){ //寻找最后一个位置

1.9K10

Excel公式技巧23: 同时定位字符串第一个最后一个数字

在很多情况下,我们都面临着需要确定字符串第一个最后一个数字位置问题,这可能是为了提取包围在这两个边界内子字符串。...本文寻找是如何通过确定字符串第一个最后一个数字来提取出子字符串一种通用解决方案,而不管分隔符是什么、有多少,并且不需要执行替换操作。...construction]由两个单独子句进行减法运算,其中一个是字符串内第一个数字位置,另一个最后一个数字位置。...我们首先查看一些确定字符串中最后一个数字位置公式结构,然后查看其中一个(如果有的话)也可能有助于发现第一个数字位置,这可能会很有用。...25分别代表字符串第一个最后一个数字位置。

2.7K10

在排序数组查找元素第一个最后一个位置(leetcode34)

给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。 如果数组不存在目标值 target,返回 [-1, -1]。...示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 解析: 方法一:二分查找 二分查找,寻找leftIdx 即为在数组寻找第一个大于等于 target...下标,寻找 rightIdx 即为在数组寻找第一个大于target 下标,然后将下标减一。...两者判断条件不同,为了代码复用,我们定义 binarySearch(nums, target, lower) 表示在 nums 数组中二分查找 target 位置,如果 lower 为 true,...则查找第一个大于等于 target 下标,否则查找第一个大于target 下标。

1.7K10

在排序数组查找元素第一个最后一个位置

前言 今天主要讲解内容是:如何在已排序数组查找元素第一个最后一个位置。以 leetcode 34 题作为例题,提供二分查找解题思路,供大家参考。...题目详述 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。 如果数组不存在目标值 target,返回 [-1, -1]。...1),不断向 mid 左侧收缩,最后达到锁定左边界(元素第一个位置)目的; 如何查找元素最后一个位置?...举栗 以 nums = [5,7,7,8,8,10], target = 8 为栗子,通过下图来找出目标值 8 在数组中出现第一个最后一个位置。...查找元素第一个最后一个位置代码: // C语言版本 int GetTargetPosition(int* nums, int numsSize, int target, int locFlag)

2.5K20

LeetCode题目34:在排序数组查找元素第一个最后一个位置

原题描述 + 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。 你算法时间复杂度必须是 O(log n) 级别。...如果数组不存在目标值,返回 [-1, -1]。...此时由于我们已经知道nums[mid]不等于target,所以lower要挪动到mid+1位置。 那么这种情况下,当lowerhigher相撞,该点一定是左边界。...但如果复用上面的逻辑,每次挪动时令lower=mid+1,那么最终lower一定会与higher相撞于最后一个target一个位置。此时lower-1才是所求。...实现时,为了能重用二分查找逻辑,可以增加一个参数来控制寻找左边界还是右边界。

3.1K20

在排序数组查找元素第一个最后一个位置--题解

在排序数组查找元素第一个最后一个位置 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。...如果数组不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 算法解决此问题吗?...示例 3: 输入:nums = [], target = 0 输出:[-1,-1] 提示: 0 <= nums.length <= 105 -109 <= nums[i] <= 109 nums 是一个非递减数组...mid - 1 } else if nums[mid] == target { end = mid } else { start = mid + 1 } } //此处防止数组第一个数是...target int) int { start, end := 0, len(nums)-1 for start < end { //此处注意,为了防止 start=mid<end 导致死循环问题

1.8K30

LeetCode - #34 在排序数组查找元素第一个最后一个位置(Top 100)

LeetCode 算法到目前我们已经更新了 33 期,我们会保持更新时间进度(周一、周三、周五早上 9:00 发布),每期内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。...如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家需求。 难度水平:中等 1. 描述 给定一个按照升序排列整数数组 nums,一个目标值 target。...找出给定目标值在数组开始位置结束位置。 如果数组不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 算法解决此问题吗? 2....输入:nums = [], target = 0 输出:[-1,-1] 约束条件: 0 <= nums.length <= 10^5 -10^9 <= nums[i] <= 10^9 nums 是一个非递减数组...时间复杂度: O(logn) 空间复杂度: O(1) 该算法题解仓库:LeetCode-Swift[2] 点击前往 LeetCode[3] 练习 特别感谢 Swift社区 编辑部每一位编辑,感谢大家辛苦付出

1.4K20

​LeetCode刷题实战34:在排序数组查找元素第一个最后一个位置

算法重要性,我就不多说了吧,想去大厂,就必须要经过基础知识业务逻辑面试+算法面试。所以,为了提高大家算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...今天和大家聊问题叫做在排序数组查找元素第一个最后一个位置,我们先来看题面: https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array...题意 给定一个按照升序排列整数数组 nums,一个目标值 target。找出给定目标值在数组开始位置结束位置。 你算法时间复杂度必须是 O(log n) 级别。...版本2:是指二分法执行完毕,返回target在最左边位置,在求出另一个边界! 关于详细说明,请看这篇[二分搜索](二分查找有几种写法?它们区别是什么?...= mid - 1; else left = mid + 1; } return res; } } 思路2:库函数 python

1.1K20
领券