Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2023 16:24:44

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

 from threading import Timer
from datetime import datetime
x=2
def timenows():
    if x==1:
        now = datetime.now() # current date and time
        texttime = now.strftime("%H:%M:%S")
        timer = Timer(1, timenows)
        timer.start()
        print(texttime)
        return texttime
    else:
        if x==2:
            starttimeing = datetime.strptime('2017-05-04',"%Y-%m-%d")
            texttime = starttimeing.strftime("%H:%M:%S")
            timer = Timer(1, timenows)
            timer.start()
            print(texttime)
            return texttime
timenows()

если x = 1 идет отсчет времени от текущего времени
если x = 2 идет отсчет времения с нуля но почемуто лепит одни нули..

H E L P P L E A S E ! ! !
T H A N K S

Отредактировано Genabox (Янв. 28, 2023 16:25:22)

Офлайн

#2 Янв. 28, 2023 18:55:15

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

должен начатся отсчет времения но этого не происходит
как получить время 00:00:00 и начать считать?
00:00:01
00:00:02
00:00:03
???

Офлайн

#3 Янв. 28, 2023 20:07:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

отсчет времени

Genabox
если x = 2 идет отсчет времения с нуля но почемуто лепит одни нули
Там же это и записано.
  
>>> from datetime import datetime
>>> 
>>> starttimeing = datetime.strptime('2017-05-04',"%Y-%m-%d")
>>> texttime = starttimeing.strftime("%H:%M:%S")
>>> texttime
'00:00:00'
>>> starttimeing
datetime.datetime(2017, 5, 4, 0, 0)
>>>

Genabox
должен начатся отсчет времения но этого не происходит
Ты понимаешь, что такое таймер? Почитай сначала, что это вообще.
https://docs.python.org/3/library/threading.html#timer-objects



Офлайн

#4 Янв. 28, 2023 20:53:20

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

таймер работает
формат времени не считается…
сам формат неправильно записан, вот я и спрашиваю где здесь ошибка
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00

Отредактировано Genabox (Янв. 28, 2023 20:56:05)

Офлайн

#5 Янв. 28, 2023 21:02:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

отсчет времени

Genabox
таймер работает
формат времени не считается…
сам формат неправильно записан, вот я и спрашиваю где здесь ошибка
Так я тебе и говорю, что ты с чего-то взял, что таймер должен тебе что-то начислять там. Просто ты не понимаешь, что это за механизм.

Genabox
00:00:00
С чего ты взял, что там должно стать 00:00:01 ?



Отредактировано py.user.next (Янв. 28, 2023 21:04:31)

Офлайн

#6 Янв. 28, 2023 21:22:07

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

если написать x=1 то все работает но время отсчитываетс с локального времениа
а мен нужно с 0ля часов 0 минут , тоесть мне нужно устаночить 0 часов ночи и начать отсчет таймером

я ж с форматом даты работаю а не с тиком таймера

Отредактировано Genabox (Янв. 28, 2023 21:23:55)

Офлайн

#7 Янв. 28, 2023 21:43:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

отсчет времени

Genabox
если написать x=1 то все работает но время отсчитываетс с локального времениа
а мен нужно с 0ля часов 0 минут , тоесть мне нужно устаночить 0 часов ночи и начать отсчет таймером

я ж с форматом даты работаю а не с тиком таймера
Оно работает при x=1 потому, что в компьютере время меняется каждую секунду само по себе безо всякого питона.

А при x=2 ничего не меняется в той дате и том времени, которое ты указал, потому что ты указал его фиксированно.

Genabox
мне нужно устаночить 0 часов ночи и начать отсчет таймером
Для этого тебе нужно каждый раз устанавливать его в новом виде. Чтобы это сделать, сделай это сначала без таймера. Поменяй время без таймера, как в примере, который я приводил выше, а потом этот код вставишь в функцию, которая вызывается по таймеру.

Также рекурсию нужно заменить на цикл. Рекурсивная версия кода через тысячу вызовов таймера (тысячу секунд) выпадет из-за лимита рекурсии. Но это потом можешь сделать, когда разберёшься с этим детским вопросом про секунды.



Отредактировано py.user.next (Янв. 28, 2023 21:45:40)

Офлайн

#8 Янв. 28, 2023 22:33:14

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

нашел другой пример до добавил милисикунды
сделано с циклом
import time

 def timenows():
    while True:
        a = 0
        b = 0
        c = 0
        d = 0
        sec = 999 + 999*60 + 999*3600 + 999*216000
        for i in range(sec):
            time.sleep(1)
            a += 1
            #print('Прошло',a ,'Секунд',b,'минут', c, 'часов')
            print(c, 'часов', b,'минут',a ,'Секунд', d, 'мс')
            if a / 60 == 1:
                b += 1
                a = 0
            if b / 60 == 1:
                c += 1
                b = 0
timenows()

но……………….. милисикунды не работают

Офлайн

#9 Янв. 28, 2023 23:01:04

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

 import time 
def timenows():
    while True:
        z = 0
        a = 0
        b = 0
        c = 0
        d = 0
        sec = 999 + 999*60 + 999*3600 + 999*216000
        for i in range(sec):
            time.sleep(0.01)
            a += 1
            #print('Прошло',a ,'Секунд',b,'минут', c, 'часов')
            print(d, 'мс:', z, 'часов |', c, 'минут |', b,'секунд |',a ,'милисекунд' )
            if a / 60 == 1:
                b += 1
                a = 0
            if b / 60 == 1:
                c += 1
                b = 0
                d += 1
            if c / 60 == 1:
                d += 1
            
            d += 1
            timek = (d+ ' мс: '+ z + ' часов | '+ c +' минут |'+ b+' секунд |' + a + ' милисекунд' )
            return timek
timenows()

посмотрим через часик все ли работает

Отредактировано Genabox (Янв. 28, 2023 23:06:05)

Офлайн

#10 Янв. 29, 2023 01:22:27

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

отсчет времени

354874 fms: 0 hr | 97 min | 32 sec | 58 ms
что то не то

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version