1Std zur Uhrzeit addieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Mittwoch 18. November 2020, 16:23

Mein Code wie es werden soll
Es geht nicht über 21:00 Uhr als Begin hinaus mal vorweg

Code: Alles auswählen

now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
#ende = begin + 1 Std
print begin
#print ende
:
ende mußte ich erst mal Kommetar setzen
es gabt versuche

Code: Alles auswählen

now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
enh = time.strftime('%H', time.localtime())
enm = time.strftime('%M', time.localtime())
ens = time.strftime('%S', time.localtime())
nenh = enh + 1
ende = nenh + ":" + enm + ":" + ens
print begin
print ende
:
ich habe wie zu sehen die Zeit zerlegt und wollte zur std 1 dazu zählen
und wieder zusammen setzen

TypeError: cannot concatenate 'str' and 'int' objects
Ok, verstehe, kann 1 nicht zu enh addieren, weil es nicht gleiche sache ist (str ist nicht gleich int)

Code: Alles auswählen

das = "1"
now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
enh = time.strftime('%H', time.localtime())
enm = time.strftime('%M', time.localtime())
ens = time.strftime('%S', time.localtime())
enh = enh + das
ende = enh + ":" + enm + ":" + ens
print "Begin = " + begin
print "Ende = " + ende
:
Begin = 16:15:34
Ende = 161:15:34
Warum nicht
Begin = 16:15:34
Ende = 17:15:34
????
Benutzeravatar
sparrow
User
Beiträge: 2739
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 18. November 2020, 16:32

Was ist denn das für ein wildes Rumgeschlönsel mit geparsten Zeiten? Wenn du "jetzt" haben willst, solltest du nach "now" suchen.

Code: Alles auswählen

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2020, 11, 18, 16, 30, 52, 892064)
>>> than = now + datetime.timedelta(hours=1)
>>> than
datetime.datetime(2020, 11, 18, 17, 30, 52, 892064)
Benutzeravatar
DeaD_EyE
User
Beiträge: 638
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Mittwoch 18. November 2020, 17:23

Ich nenne das Bruteforce-Coding.
Man kann nicht einfach irgendwas schreiben und erwarten, dass der Computer (der Python Interpreter) die Gedankengänge magisch interpretieren kann. Wie soll das gehen?
Außerdem wäre es dann für andere Entwickler schwierig Gedankengänge nachzuvollziehen, wenn der Interpreter schwarze Magie anwendet.
D.h. man hätte dann auch keinen gemeinsamen Standard und jeder schreibt wie er lustig ist.

Zum Glück ist das noch nicht möglich.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Donnerstag 19. November 2020, 12:04

Mein ganzer Code ist zusammen gestückelt
wo ich was gefunden hatte habe ich übernommen und getestet
In Bücher und im Internet wo ich suchte fand ich keine Lösung
Ich bastelle an einer E-Parkscheibe wo mit Knopfdruck Begin und geplante
Endzeit angezeigt werden soll
Daher meine Versuche zu einer Bestimmten Zeit nach Vorauswahl
nach Start drücken die gewählte Std dazu addiert werden sollen

now = datetime.datetime.today()
begin = time.strftime('%H:%M:%S', time.localtime())
print begin

soweit klappt alles
aber 1 std ( für die ersten tests ) dazu klappt nicht

gibt es überhaupt eine Lösung
unter PHP habe ich es gelöst bekommen schon mal
aber das kann ich hier nicht einsetzen
Benutzeravatar
pillmuncher
User
Beiträge: 1268
Registriert: Samstag 21. März 2009, 22:59
Wohnort: München

Donnerstag 19. November 2020, 12:14

@co-se: sparrow hat dir die Lösung doch schon gezeigt.
In specifications, Murphy's Law supersedes Ohm's.
__deets__
User
Beiträge: 10052
Registriert: Mittwoch 14. Oktober 2015, 14:29

Donnerstag 19. November 2020, 12:33

Die Antwort ist von sparrow gegeben worden. Was daran ist unklar?
Sirius3
User
Beiträge: 14759
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 19. November 2020, 13:28

@co-se: PHP ist schwach typisiert, da kann man Zahlen mit Strings addieren und es kommt irgendwas raus, was, wenn man es richtig macht, vielleicht auch dem entspricht, was man möchte. Kurz, es ist ein Quell fröhlicher Fehlersuchen. Python dagegen ist stark typisiert, ein String wird nicht einfach so zur Zahl und auch nicht umgekehrt.

In Deinem Code ermittelst Du vier mal die aktuelle Zeit. Da kannst Du lustig daneben liegen, wenn Du die Stunde um 14:59:59 ermittelst und die Minuten erst um 15:00:00.
Gwöhn Dir auch gleich an, sprechende Variablennamen zu verwenden. Man darf gerne mehr als drei Buchstaben verwenden.

Python2 ist schon seit langem veraltet und wird nicht mehr gepflegt, steige auf Python3 um.
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Samstag 21. November 2020, 07:41

Habe nun umgestellt auf python 3
aber jetzt will meine abfrage nicht mehr

Code: Alles auswählen

import RPi.GPIO as GPIO
import MFRC522
import signal
import datetime
import time
import mysql.connector
import os

#Zugriff auf Datenbank
mydb = mysql.connector.connect (host = "localhost",
				user = "root",
				password = "eadmin",
				database = "test")
bus = "ff"
mycursor = mydb.cursor()
sql = "SELECT d1, d2, d3, d3, d5 FROM db WHERE d6 = %s"
adr = (bus, )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
for row in myresult:
    mycursor = mydb.cursor()
    sql = "INSERT INTO ess (v1, v2, v3) VALUES (%s, %s, %s)"
    val = ("1", "2", "3")
    mycursor.execute(sql, val)
    mydb.commit()
    print("Auftrag erledigt")
ohne abfrage kein problem
ist es möglich eine abfrage zu bekommen wenn bus = "uu" ist das ich eine meldung schreiben kann wie print("Nicht möglich")
Benutzeravatar
sparrow
User
Beiträge: 2739
Registriert: Freitag 17. April 2009, 10:28

Samstag 21. November 2020, 07:57

Was heißt denn "will nicht mehr"?
Fehlermeldung? Traceback? Was erwartest du, was passiert stattdessen?
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Samstag 21. November 2020, 08:32

keine fehlermeldungung
meine SQL abfragen und eintragungen sind ok
unter python 2
a= cur.execute("SELECT d1, d2, d3, d3, d5 FROM db WHERE d6 = %s" ,bus )
if a == 0:
print "Auftrag erledigt"
continue
else:
print "Nicht möglich"
war das möglich
unter python3 nicht mehr
das nicht vorhanden sein wird nicht ausgeführt
besser gesagt ich weiß nicht wie ich es unter python3 sowas hinbekomme
Benutzeravatar
__blackjack__
User
Beiträge: 8823
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Samstag 21. November 2020, 11:07

@co-se: Da fehlt die Abfrage des Ergebnisses von dem SELECT.

Das `a` was Du da verwendest ist undefiniert. `Cursor.execute()` gibt nichts zurück. Siehe hier den letzten Absatz: https://www.python.org/dev/peps/pep-0249/#id15
Q: What is the volume of a pizza of radius z and thickness a?
A: pi·z·z·a
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Samstag 21. November 2020, 12:54

das ist in python2 geschrieben da klappt es
unter python3

Code: Alles auswählen

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers, tools, windows WHERE tools = %s"
adr = ("YG2", )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
so

Code: Alles auswählen

for row in myresult:
    if card == row[1]:
        print ("Auftrag erledigt")
        continue
    else:
        print ("Nicht möglich")
oder

Code: Alles auswählen

if sql == 0:
print ("Auftrag erledigt")
continue
else:
print ("Nicht möglich")
komme ich nicht weiter
ist mein Wert YG2 wenn er da ist dann kommt auftrag erledigt habe ich einen andeern Wert XG3 dann passiert nichts
brauche aber print ("Nicht möglich")
Benutzeravatar
__blackjack__
User
Beiträge: 8823
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Samstag 21. November 2020, 13:26

@co-se: Das sieht sehr komisch aus. Das ``continue`` macht keinen Sinn. Und `sql` ist eine Zeichenkette, die kann niemals gleich dem Zahlwert 0 sein. `card` ist nicht definiert. Im letzten Quelltextschnippsel fehlt die Einrückung.

Falls `card` den Wert "YG2" hat, die Abfrage für `tools` in einem Datensatz aber "XG3" ist, dann gibt der gezeigte Code "Nicht möglich" aus.

Diese ganze `my`-Präfixe bei den Namen bringen keinen Mehrwert, die sollten da nicht stehen.
Q: What is the volume of a pizza of radius z and thickness a?
A: pi·z·z·a
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Samstag 21. November 2020, 13:40

mir klar das es komisch aussieht, aber im grunde geht es nicht wie ich es brauche und habe im internet und im buch nichts gefunden
auch versuche mit if was zu machen ist erfolglos
A = Wert ( ändert sich)
B irgenwo in einer Tabelle
SQL Abfrage = Hole mir Daten aus Tabelle mit Wert B was A hat
Schreibe mir Daten in andere Tabelle
Soweit so gut
ist aber A nicht in Tabelle wo B ist
dann bringe mir Fehlermeldung

das ist für mich nicht lösbar
co-se
User
Beiträge: 20
Registriert: Dienstag 20. Oktober 2020, 13:36

Samstag 21. November 2020, 13:47

Eine möglichkeit habe ich noch gefunden
ich müßte über Shell arbeiten
os.system:
ich rufe also unter python die shell auf
... php run.php
aber wie ist es mit rückmeldungen an python um fehlermeldungen weiter zu bearbeiten
Antworten