Уведомления

Группа в Telegram: @pythonsu

#1 Июль 27, 2019 22:26:54

SharkyEXE
Зарегистрирован: 2017-12-10
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

Romissevd

Большое Вам спаисбо за комментарии, хоть немного я научусь

Да, еще - а Вы делали специально под смещение +0300 или Ваш код универсальный, например для всего ниженаписанного будет работать
+0300
+0530
+1200
-0300
-0530
-1200
?

Просто мне хочется универсального, чтобы для любого смещения
+0300
+0530
+1200
-0300
-0530
-1200
и другие работало бы…

Офлайн

#2 Июль 27, 2019 22:35:50

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

я же в комментах описал, что учитываю
когда определяю часы zone_hour они будут или положительными или отрицательными в зависимости от входных данных
а если зона не цельночасовая, то прибавляем еще 1800 секунд, хотя знак нужно определить правильно и для него, что я не сделал т.е. если будет -5:30 то в итоге получится -4:30. Ща откорректирую

Офлайн

#3 Июль 27, 2019 22:39:09

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

с корректировкой

 tz = strftime('%z')
zone_hour = int(tz[:3])*3600
zone_minutes = int(tz[3:])
if zone_minutes > 0:
    if tz[0] == '+': 
         zone_minutes = 1800
    else: 
         zone_minutes = -1800
ts = int(strftime("%s")) + zone_hour + zone_minutes 
pr=''
if (ts%86400)<43200:
    pr='AM'
else:
    pr='PM'
return strftime('%H:%M:%S') + "\n" + strftime('%s') + "\n" + strftime('%l:%M') + " " + pr + " " + strftime('%z')

Отредактировано Romissevd (Июль 27, 2019 22:40:01)

Офлайн

#4 Июль 27, 2019 23:02:33

SharkyEXE
Зарегистрирован: 2017-12-10
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

Romissevd

Большое Вам спасибо.

А еще - а нельзя сделать универсально, пожалуйста, типа если не 30 минут, а 40, 45 или другое, типа
+03:30
+05:45
-03:20
-12:55
значение, чтобы параметр

 zone_minutes = 1800
автоматически пересчитывался, типа сколько минут, эти минуты бы на 60 умножались, типа так
zone_minutes = zone_minutes берется из zone_minutes = int(tz) * 60
если zone_minutes = 30, то будет
zone_minutes = zone_minutes * 60
если zone_minutes = 45, то будет
zone_minutes = zone_minutes * 60

Или как это делается

Пожалуйста

Отредактировано SharkyEXE (Июль 27, 2019 23:12:23)

Офлайн

#5 Июль 27, 2019 23:15:05

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

не встречал часовые пояса с 10 и т.п. минутами, но сделай вот так

 tz = strftime('%z')
zone_hour = int(tz[:3])*3600
zone_minutes = int(tz[3:])
if zone_minutes > 0:
    zone_min_in_sec = zone_minutes*60
    if tz[0] == '+': 
         zone_min_in_sec = -zone_min_in_sec
ts = int(strftime("%s")) + zone_hour + zone_min_in_sec 
pr=''
if (ts%86400)<43200:
    pr='AM'
else:
    pr='PM'
return strftime('%H:%M:%S') + "\n" + strftime('%s') + "\n" + strftime('%l:%M') + " " + pr + " " + strftime('%z')

Офлайн

#6 Июль 27, 2019 23:20:07

SharkyEXE
Зарегистрирован: 2017-12-10
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

Romissevd

Да я как бы за универсальность, повторюсь, чтобы голова не болела, сколько минут в часовой зоне - 10 минут, 20, 50, 45 или другое

1) А вот здесь не ошибка

 if zone_minutes > 0:
    zone_min_in_sec = zone_minutes*60
    if tz[0] == '+': 
         zone_min_in_sec = -zone_min_in_sec

Может здесь
 if tz[0] == '+':
знак минус должен быть, так
 if tz[0] == '-':

Просто здесь перейти я понял, что если знак + в часовой зоне, то положительное значение, иначе отрцательное

2) Почему-то на Ваш последний код ругается
Traceback (most recent call last):
File “jdoodle.py”, line 9, in <module>
ts = int(strftime(“%s”)) + zone_hour + zone_min_in_sec
NameError: name ‘zone_min_in_sec’ is not defined
Command exited with non-zero status 1

Отредактировано SharkyEXE (Июль 27, 2019 23:39:52)

Офлайн

#7 Июль 27, 2019 23:48:40

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

Ты прав, я уже пьян и не соображаю маленький (суббота все таки)

 tz = strftime('%z')
zone_hour = int(tz[:3])*3600
zone_minutes = int(tz[3:])
if zone_minutes > 0:
    zone_minutes = zone_minutes*60
    if tz[0] == '-': 
         zone_minutes = -zone_minutes
ts = int(strftime("%s")) + zone_hour + zone_minutes 
pr=''
if (ts%86400)<43200:
    pr='AM'
else:
    pr='PM'
return strftime('%H:%M:%S') + "\n" + strftime('%s') + "\n" + strftime('%l:%M') + " " + pr + " " + strftime('%z')/code]

Офлайн

#8 Июль 28, 2019 17:03:40

SharkyEXE
Зарегистрирован: 2017-12-10
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

strftime %p не отображается AM или PM

Romissevd

Здравствуйте.

Большое Вам спасибо.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version