Как я могу использовать Timesince - PullRequest
0 голосов
/ 08 июня 2011

Я нашел этот фрагмент:

def timesince(dt, default="just now"):
        now = datetime.utcnow()
        diff = now - dt
        periods = (
                (diff.days / 365, "year", "years"),
        (diff.days / 30, "month", "months"),
        (diff.days / 7, "week", "weeks"),
        (diff.days, "day", "days"),
        (diff.seconds / 3600, "hour", "hours"),
        (diff.seconds / 60, "minute", "minutes"),
        (diff.seconds, "second", "seconds"),
    )
    for period, singular, plural in periods:
            if period:
                        return "%d %s ago" % (period, singular if period == 1 else plural)
    return default

и хочу использовать его в выводе при выполнении запроса к моей базе данных в Google Appegine.Моя база данных выглядит так:

class Service(db.Model):
    name = db.StringProperty(multiline=False)
    urla = db.StringProperty(multiline=False)
    urlb = db.StringProperty(multiline=False)
    urlc = db.StringProperty(multiline=False)
    timestampcreated = db.DateTimeProperty(auto_now_add=True)
    timestamplastupdate = db.DateTimeProperty(auto_now=True)

На главной странице обработчика запросов веб-приложения я хочу сделать:

            elif self.request.get('type') == 'list':
                    q = db.GqlQuery('SELECT * FROM Service')
                    count = q.count()
                    if count == 0:
                            self.response.out.write('Success: No services registered, your database is empty.')
                    else: 
                            results = q.fetch(1000)
                            for result in results:
                                    resultcreated = timesince(result.timestampcreated)
                                    resultupdated = timesince(result.timestamplastupdate)
                                    self.response.out.write(result.name + '\nCreated:' + resultcreated + '\nLast Updated:' + resultupdated + '\n\n')

Что я делаю не так?У меня проблемы с форматированием кода с использованием фрагмента.

Что из этого мне следует сделать?

это?

def timesince:
class Service
class Mainpage
  def get(self):

или это?

class Service
class Mainpage
  def timesince:
  def get(self):

Я не слишком знаком с Python и был бы признателен за любую информацию о том, как это исправить.Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2016

Это прекрасно работает для меня:

from datetime import datetime 
def timesince(dt, default="now"):
    now = datetime.now()
    diff = now - dt
    periods = (
        (diff.days / 365, "year", "years"),
        (diff.days / 30, "month", "months"),
        (diff.days / 7, "week", "weeks"),
        (diff.days, "day", "days"),
        (diff.seconds / 3600, "hour", "hours"),
        (diff.seconds / 60, "minute", "minutes"),
        (diff.seconds, "second", "seconds"),
    )
    for period, singular, plural in periods:
        if period >= 1:
            return "%d %s ago" % (period, singular if period == 1 else plural)
    return default

timesince(datetime(2016,6,7,12,0,0))
timesince(datetime(2016,6,7,13,0,0))
timesince(datetime(2016,6,7,13,30,0))
timesince(datetime(2016,6,7,13,50,0))
timesince(datetime(2016,6,7,13,52,0))
0 голосов
/ 08 июня 2011

Мне не совсем понятно, в чем проблема, с которой вы столкнулись, так что терпите меня.Отслеживание будет полезно.:)

timesince () не требует никаких переменных-членов, поэтому я не думаю, что это должно быть внутри одного из классов.Если бы я был в вашей ситуации, я бы, вероятно, поместил бы timesince в его собственный файл, а затем импортировал бы этот модуль в файл, где определена Mainpage.

Если вы помещаете их все в один файл, убедитесь, чтоВаш интервал соответствует, и у вас нет вкладок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...