计算从今天起上一个月的日期

 1 from datetime import *
 2 import calendar
 3
 4 def get_monthago_date():
 5     nowtime = date.today()
 6     nowtime_year = nowtime.year
 7     nowtime_month = nowtime.month
 8     nowtime_day = nowtime.day
 9
10     onemonthago = nowtime_month - 1    #减去一个月,判断是否为0,为0表示当前月份是1月份
11
12     if onemonthago == 0:    #如果当前月份为1月份,就需要设置年份减去1,月份为12月
13         oneyearago = nowtime_year - 1
14         onemonthago = 12
15         monthindex, monthdays = calendar.monthrange(oneyearago, onemonthago)    #获取上一个月有多少天
16
17         if monthdays >= nowtime_day:    #如果上一个月的总天数大于当前日期就用当前的日期
18             onemonthdate = nowtime.replace(year=oneyearago, month=onemonthago, day=nowtime_day)
19         else:    #如果上一个月的总天数都小于当前的日期(2月28和3.31这种情况)就使用上个月的最大日期
20             onemonthdate = nowtime.replace(year=oneyearago, month=onemonthago, day=monthdays)
21
22         return onemonthdate.strftime(‘%Y-%m-%d‘)
23     else:
24         monthindex, monthdays = calendar.monthrange(nowtime_year, onemonthago)
25
26         if monthdays >= nowtime_day:
27             onemonthdate = nowtime.replace(year=nowtime_year, month=onemonthago, day=nowtime_day)
28         else:
29             onemonthdate = nowtime.replace(year=nowtime_year, month=onemonthago, day=monthdays)
30
31         return onemonthdate.strftime(‘%Y-%m-%d‘)
时间: 2024-10-14 23:27:37

计算从今天起上一个月的日期的相关文章

使用PHP计算上一个月的今天

一日,遇到一个问题,求上一个月的今天. 最开始我们使用 strtotime(“-1 month”) 函数求值,发现有一个问题,月长度不一样的月份的计算结果有误. 比如:2011-03-31,得到的结果是2011-03-03.我们先不追究什么问题,先看如何解决问题. 此时,想起PHP中有一个mktime函数,于是自己写了如下代码: echo date("Y-m-d H:i:s", mktime(date("G", $time), date("i",

js计算当前日期上一个月和下一个月

/**         * 获取上一个月         *         * @date 格式为yyyy-mm-dd的日期,如:2014-01-25         */        function getPreMonth(date) {            var arr = date.split('-');            var year = arr[0]; //获取当前日期的年份            var month = arr[1]; //获取当前日期的月份   

js获取上一个月、下一个月格式为yyyy-mm-dd的日期

/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da

JS中在当前日期上追加一天或者获取上一个月和下一个月

/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da

js获取上一个月、下一个月

/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = da

Php 获取上一个月或者下一个月时间参考

function GetMonth($sign="1"){ //得到系统的年月 $tmp_date=date("Ym"); //切割出年份 $tmp_year=substr($tmp_date,0,4); //切割出月份 $tmp_mon =substr($tmp_date,4,2); $tmp_nextmonth=mktime(0,0,0,$tmp_mon+1,1,$tmp_year); $tmp_forwardmonth=mktime(0,0,0,$tmp_mo

php获取上一个月的开始与结束时间遇到的问题

改正之前: $_lastMonthStart = date('Y-m-1 00:00:00', strtotime("-1 month")); $_lastMonthEnd = date('Y-m-d H:i:s', strtotime('-1 sec', strtotime($_monthStart))); $preMonthRange = [$_lastMonthStart, $_lastMonthEnd]; 想要的结果:上一个月的开始和结束时间这一范围. 出现的问题描述:5月31

JS 如何获取当前上一个月、下一个月和月份所含天数

在数据报表查询中,经常需要设置查询的日期区间,如查询2018-02-01至2018-02-28的整月数据,这时需要提供快捷整月查询按钮: 如: 一般日期年月日之间由"-"或者"/"等符合分割开,简单判断当前月份进行处理即可.另外,如何获取所选月份的最大天数是关键,这里可以借助js自带Date函数来处理,关键在于定位到所选月份的最后一天 关键代码如下: function changeMonth(type) { //获取当前输入框内的日期 var s_date = $(

PHP 日期格式化和日期计算以及获取当前周、月头尾日期

PHP 日期格式化和日期计算以及当获取前周.月头尾日期 PHP 日期格式化示例代码: /** * 格式化时间 * $type:类型 * $strDate:需要处理的时间字符串 * * 年份 Y:四位年份 y:两位年份 * 月份 m: 两位数字月份 n: 一位数字月份 M:英文月 * 日期 d:两位数字日期 j:一位数字日期 D:英文日期 * 时:H .分:i .秒:s **/ public function GetFormatDate($type = 1,$strDate=''){ $time