Я думаю, вы немного запутались. Это понятно с пространствами имен. Gds.GoogleMap.UltimatePlus.Math.Mathservice - это , а не имя пространства имен. Имя пространства имен - Gds.GoogleMap.UltimatePlus.Math . MathService - это имя класса .
Если вы поместите оператор
using Gds.GoogleMap.UltimatePlus.Math;
в начало вашего файла, тогда все, что вам нужно сделать, чтобы объявить новый объект, это сказать:
MathService myService = new MathService();
, предполагая, что он имеет конструктор по умолчанию.
Попробуйте.
import datetime
print (datetime.date.today() + datetime.timedelta(6*365/12)).isoformat()
Используйте модуль даты и времени Python для добавления timedelta шести месяцев к datetime.today ().
http://docs.python.org/library/datetime.html
необходимо ли будет, конечно, решить вопрос, поднятый Иоганнесом WeiГџ - что делают , Вы подразумеваете под 6 месяцами?
Просто используйте метод timetuple , чтобы извлечь месяцы, добавить Ваши месяцы и создать новый dateobject. Если существует уже существующий метод для этого, я не знаю это.
import datetime
def in_the_future(months=1):
year, month, day = datetime.date.today().timetuple()[:3]
new_month = month + months
return datetime.date(year + (new_month / 12), (new_month % 12) or 12, day)
API немного неуклюж, но работает примером. Не будет также, очевидно, работать над угловыми случаями как 31.01.2008 + 1 месяц. :)
Что Вы подразумеваете 'под 6 месяцами'. 13.02.2009 + 6 месяцев == 13.08.2009 или это 13.02.2009 + 6*30 дней?
import mx.DateTime as dt
#6 Months
dt.now()+dt.RelativeDateTime(months=6)
#result is '2009-08-13 16:28:00.84'
#6*30 days
dt.now()+dt.RelativeDateTime(days=30*6)
#result is '2009-08-12 16:30:03.35'
[еще 113] информация приблизительно mx. DateTime
Нет никакого прямого способа сделать это с датой и временем Python.
Выезд relativedelta вводят в python-dateutil . Это позволяет Вам указать дельту времени в течение многих месяцев.
пакет Dateutil имеет реализацию такой функциональности. Но знайте, что это уже будет наивно как другие, на которых указывают.
Ну, это зависит, что Вы подразумеваете под 6 месяцами с текущей даты.
Используя естественные месяцы:
(day, month, year) = (day, (month+6)%12, year+(month+6)/12)
Используя определение банкира, 6*30:
date += datetime.timedelta(6*30)
Это не отвечает на конкретный вопрос (использующий datetime
только), но, учитывая, что другие предложили использование различных модулей, здесь существует решение с помощью pandas
.
import datetime as dt
import pandas as pd
date = dt.date.today() - \
pd.offsets.DateOffset(months=6)
print(date)
2019-05-04 00:00:00
, Который работает как ожидалось в високосные годы
date = dt.datetime(2019,8,29) - \
pd.offsets.DateOffset(months=6)
print(date)
2019-02-28 00:00:00
Класс QDate в PyQt4 имеет функцию addmonths.
>>>from PyQt4.QtCore import QDate
>>>dt = QDate(2009,12,31)
>>>required = dt.addMonths(6)
>>>required
PyQt4.QtCore.QDate(2010, 6, 30)
>>>required.toPyDate()
datetime.date(2010, 6, 30)
Просто «svn copy» отсутствующие папки из ветви в багажник рекурсивно.
-121--3021061-Используйте генератор случайных чисел, который генерирует однородное число с плавающей запятой r между 0 и 1. Если r > p, установите бит на 0, в противном случае установите его на 1
-121--4268599-Модифицированный ответ Иоганнеса Вея в случае 1new_month = 121. Это отлично работает для меня. Месяцы могут быть положительными или отрицательными.
def addMonth(d,months=1):
year, month, day = d.timetuple()[:3]
new_month = month + months
return datetime.date(year + ((new_month-1) / 12), (new_month-1) % 12 +1, day)
Это то, что я придумал. Он перемещает правильное количество месяцев и лет, но игнорирует дни (это было то, что мне было нужно в моей ситуации).
import datetime
month_dt = 4
today = datetime.date.today()
y,m = today.year, today.month
m += month_dt-1
year_dt = m//12
new_month = m%12
new_date = datetime.date(y+year_dt, new_month+1, 1)
Я использую эту функцию, чтобы изменить год и месяц, но сохранить день:
def replace_month_year(date1, year2, month2):
try:
date2 = date1.replace(month = month2, year = year2)
except:
date2 = datetime.date(year2, month2 + 1, 1) - datetime.timedelta(days=1)
return date2
Вы должны написать:
new_year = my_date.year + (my_date.month + 6) / 12
new_month = (my_date.month + 6) % 12
new_date = replace_month_year(my_date, new_year, new_month)
Итак, вот пример dateutil.relativedelta
, который я нашел полезным для итерации по прошлому году, пропуская каждый раз месяц до текущей даты:
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> today = datetime.datetime.today()
>>> month_count = 0
>>> while month_count < 12:
... day = today - relativedelta(months=month_count)
... print day
... month_count += 1
...
2010-07-07 10:51:45.187968
2010-06-07 10:51:45.187968
2010-05-07 10:51:45.187968
2010-04-07 10:51:45.187968
2010-03-07 10:51:45.187968
2010-02-07 10:51:45.187968
2010-01-07 10:51:45.187968
2009-12-07 10:51:45.187968
2009-11-07 10:51:45.187968
2009-10-07 10:51:45.187968
2009-09-07 10:51:45.187968
2009-08-07 10:51:45.187968
Как и в других ответах, вы должны понять, что вы на самом деле подразумеваете под "через 6 месяцев". Если вы имеете в виду "сегодняшний день месяца в месяце через шесть лет в будущем", то подойдет следующее:
datetime.datetime.now() + relativedelta(months=6)
Это решение работает правильно в декабре, чего нет в большинстве ответов на этой странице. Вам нужно сначала сдвинуть месяцы с базы 1 (например, январь = 1) на базу 0 (например, январь = 0), прежде чем использовать модуль (%) или целочисленное деление (//), в противном случае ноябрь (11) плюс 1 месяц даст вам 12 , что при нахождении остатка (12% 12) дает 0.
(И не предлагайте "(месяц% 12) + 1" или октябрь + 1 = декабрь!)
def AddMonths(d,x):
newmonth = ((( d.month - 1) + x ) % 12 ) + 1
newyear = d.year + ((( d.month - 1) + x ) / 12 )
return datetime.date( newyear, newmonth, d.day)
Однако ... Это не объясняет проблему как 31 января + один месяц. Итак, мы возвращаемся к OP - что вы имеете в виду, добавляя месяц? Один путь - вернуться, пока не дойдете до действительного дня, учитывая, что большинство людей считает, что последний день января плюс один месяц равняется последнему дню февраля. Это также будет работать с отрицательными числами месяцев. Доказательство:
>>> import datetime
>>> AddMonths(datetime.datetime(2010,8,25),1)
datetime.date(2010, 9, 25)
>>> AddMonths(datetime.datetime(2010,8,25),4)
datetime.date(2010, 12, 25)
>>> AddMonths(datetime.datetime(2010,8,25),5)
datetime.date(2011, 1, 25)
>>> AddMonths(datetime.datetime(2010,8,25),13)
datetime.date(2011, 9, 25)
>>> AddMonths(datetime.datetime(2010,8,25),24)
datetime.date(2012, 8, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-1)
datetime.date(2010, 7, 25)
>>> AddMonths(datetime.datetime(2010,8,25),0)
datetime.date(2010, 8, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-12)
datetime.date(2009, 8, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-8)
datetime.date(2009, 12, 25)
>>> AddMonths(datetime.datetime(2010,8,25),-7)
datetime.date(2010, 1, 25)>>>