Nous essayons de créer une fonction de calendrier en python. Nous avons créé un petit système de gestion de contenu, l'exigence est, il y aura une liste déroulante dans le coin supérieur droit du site, qui donnera les options - Mois - 1 mois, 2 mois, 3 mois et ainsi de suite. .., si l'utilisateur sélectionne 8 mois, il devrait afficher le nombre de posts pour les 8 derniers mois. le problème est que nous avons essayé d'écrire un petit code qui ferait les calculs du mois, mais le bug est qu'il ne considère pas les mois au-delà de l'année en cours, il montre le postscount seulement pour les mois de l'année en cours. Par exemple: si l'utilisateur sélectionne 3 mois, il affichera le compte pour les 3 mois, c'est-à-dire le mois présent et les 2 mois précédents, mais si l'utilisateur sélectionne l'option plus de 4 mois, il ne considère pas les mois de l'année précédente, il montre toujours le mois de l'année actuelle seulement.calendrier python pour calculer le mois en arrière
Je coller le code ci-dessous: -
def __getSpecifiedMailCount__(request, value):
dbconnector= DBConnector()
CdateList= "select cdate from mail_records"
DateNow= datetime.datetime.today()
DateNow= DateNow.strftime("%Y-%m")
DateYear= datetime.datetime.today()
DateYear= DateYear.strftime("%Y")
DateMonth= datetime.datetime.today()
DateMonth= DateMonth.strftime("%m")
#print DateMonth
def getMonth(value):
valueDic= {"01": "Jan", "02": "Feb", "03": "Mar", "04": "Apr", "05": "May", "06": "Jun", "07": "Jul", "08": "Aug", "09": "Sep", "10": "Oct", "11": "Nov", "12": "Dec"}
return valueDic[value]
def getMonthYearandCount(yearmonth):
MailCount= "select count(*) as mailcount from mail_records where cdate like '%s%s'" % (yearmonth, "%")
MailCountResult= MailCount[0]['mailcount']
return MailCountResult
MailCountList= []
MCOUNT= getMonthYearandCount(DateNow)
MONTH= getMonth(DateMonth)
MailCountDict= {}
MailCountDict['monthyear']= MONTH + ' ' + DateYear
MailCountDict['mailcount']= MCOUNT
var_monthyear= MONTH + ' ' + DateYear
var_mailcount= MCOUNT
MailCountList.append(MailCountDict)
i=1
k= int(value)
hereMONTH= int(DateMonth)
while (i < k):
hereMONTH= int(hereMONTH) - 1
if (hereMONTH < 10):
hereMONTH = '0' + str(hereMONTH)
if (hereMONTH == '00') or (hereMONTH == '0-1'):
break
else:
PMONTH= getMonth(hereMONTH)
hereDateNow= DateYear + '-' + PMONTH
hereDateNowNum= DateYear + '-' + hereMONTH
PMCOUNT= getMonthYearandCount(hereDateNowNum)
MailCountDict= {}
MailCountDict['monthyear']= PMONTH + ' ' + DateYear
MailCountDict['mailcount']= PMCOUNT
var_monthyear= PMONTH + ' ' + DateYear
var_mailcount= PMCOUNT
MailCountList.append(MailCountDict)
i = i + 1
#print MailCountList
MailCountDict= {'monthmailcount': MailCountList}
reportdata = MailCountDict['monthmailcount']
#print reportdata
return render_to_response('test.html', locals())
Hey mon pote, tu as résolu mon problème, l'homme merci. J'ai fait marcher les choses. – Suhail
Vous pouvez cliquer sur le bouton cocher situé à gauche de ma réponse pour la marquer comme la réponse «acceptée». –
Cela échouera si vous comptez à rebours si vous incluez le mois de février puisque vous calculerez en janvier pour le mois de février. Habituellement, ce ne sera pas un problème, mais vous ne voulez pas qu'il échoue où aujourd'hui = 1er ou 2 mars, non? Y a-t-il un moyen facile de savoir quel mois il y a "n mois" était? –