Найти - Пользователи
Полная версия: strftime %p не отображается AM или PM
Начало » Python для новичков » strftime %p не отображается AM или PM
1 2 3 4
SharkyEXE
Romissevd

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

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

Просто мне хочется универсального, чтобы для любого смещения
+0300
+0530
+1200
-0300
-0530
-1200
и другие работало бы…
Romissevd
я же в комментах описал, что учитываю
когда определяю часы zone_hour они будут или положительными или отрицательными в зависимости от входных данных
а если зона не цельночасовая, то прибавляем еще 1800 секунд, хотя знак нужно определить правильно и для него, что я не сделал т.е. если будет -5:30 то в итоге получится -4:30. Ща откорректирую
Romissevd
с корректировкой
 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')
SharkyEXE
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

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

Пожалуйста
Romissevd
не встречал часовые пояса с 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')
SharkyEXE
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
Romissevd
Ты прав, я уже пьян и не соображаю маленький (суббота все таки)
 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]
SharkyEXE
Romissevd

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

Большое Вам спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB