Erstellt eine Python-Bibliothek DateTimeRange, die Zeitbereiche verarbeitet

Ich habe es gemacht, weil ich es von Zeit zu Zeit brauche.

Documentation http://datetimerange.readthedocs.org/en/latest/

Installation

pip install DateTimeRange

Usage Der Ort, an dem die Zeitzeichenfolge eingegeben wird, kann vom Typ datetime sein.

Erstellung und Konvertierung in Strings

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
str(time_range)
'2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900'

Vergleich

from datetimerange import DateTimeRange
lhs = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
rhs = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print "lhs == rhs: ", lhs == rhs
print "lhs != rhs: ", lhs != rhs
lhs == rhs:  True
lhs != rhs:  False

Zeitbereich verschieben

import datetime
from datetimerange import DateTimeRange
value = DateTimeRange("2015-03-22T10:10:00+0900", "2015-03-22T10:20:00+0900")
print value + datetime.timedelta(seconds=10 * 60)
print value - datetime.timedelta(seconds=10 * 60)
2015-03-22T10:20:00+0900 - 2015-03-22T10:30:00+0900
2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900

Angeben des Zeichenfolgenkonvertierungsformats

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.start_time_format = "%Y/%m/%d"
time_range.end_time_format = "%Y/%m/%dT%H:%M:%S%z"
time_range
2015/03/22 - 2015/03/22T10:10:00+0900

Verstrichene Zeit beim Zurückgeben von Zeichenfolgen hinzugefügt

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.is_output_elapse = True
time_range
2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900 (0:10:00)

Separatoreinstellung

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.separator = " to "
time_range
2015-03-22T10:00:00+0900 to 2015-03-22T10:10:00+0900

Startzeit abrufen (Typ datetime.datetime)

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.start_datetime
datetime.datetime(2015, 3, 22, 10, 0, tzinfo=tzoffset(None, 32400))

Holen Sie sich die Startzeit als String

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print time_range.get_start_time_str()
time_range.start_time_format = "%Y/%m/%d %H:%M:%S"
print time_range.get_start_time_str()
2015-03-22T10:00:00+0900
2015/03/22 10:00:00

Endzeit abrufen (Typ datetime.datetime)

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.end_datetime
datetime.datetime(2015, 3, 22, 10, 10, tzinfo=tzoffset(None, 32400))

Holen Sie sich die Endzeit als Zeichenfolge

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print time_range.get_end_time_str()
time_range.end_time_format = "%Y/%m/%d %H:%M:%S"
print time_range.get_end_time_str()
2015-03-22T10:10:00+0900
2015/03/22 10:10:00

Holen Sie sich timedelta

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.timedelta
datetime.timedelta(0, 600)

Holen Sie sich Timedelta in Sekunden

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.get_timedelta_second()
600.0

Startzeit einstellen

from datetimerange import DateTimeRange
time_range = DateTimeRange()
print time_range
time_range.set_start_datetime("2015-03-22T10:00:00+0900")
print time_range
NaT - NaT
2015-03-22T10:00:00+0900 - NaT

Endzeit einstellen

from datetimerange import DateTimeRange
time_range = DateTimeRange()
print time_range
time_range.set_end_datetime("2015-03-22T10:10:00+0900")
print time_range
NaT - NaT
NaT - 2015-03-22T10:10:00+0900

Zeitbereich einstellen

from datetimerange import DateTimeRange
time_range = DateTimeRange()
print time_range
time_range.set_time_range("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print time_range
NaT - NaT
2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900

Ist der Wert eingestellt

from datetimerange import DateTimeRange
time_range = DateTimeRange()
print time_range.is_set()
time_range.set_time_range("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print time_range.is_set()
False
True

Ist die Zeit umgekehrt?

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:10:00+0900", "2015-03-22T10:00:00+0900")
try:
    time_range.validate_time_inversion()
except ValueError:
    print "time inversion"
time inversion

Zeitbereichswertprüfung

from datetimerange import DateTimeRange
time_range = DateTimeRange()
print time_range.is_valid_timerange()
time_range.set_time_range("2015-03-22T10:20:00+0900", "2015-03-22T10:10:00+0900")
print time_range.is_valid_timerange()
time_range.set_time_range("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print time_range.is_valid_timerange()
False
False
True

Liegt es im Zeitbereich?

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
print "2015-03-22T10:05:00+0900" in time_range
print "2015-03-22T10:15:00+0900" in time_range
True
False

Holen Sie sich Iterator (range)

import datetime
from datetimerange import DateTimeRange

time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2015-01-04T00:00:00+0900")
for value in time_range.range(datetime.timedelta(days=1)):
    print value
2015-01-01 00:00:00+09:00
2015-01-02 00:00:00+09:00
2015-01-03 00:00:00+09:00
2015-01-04 00:00:00+09:00
from datetimerange import DateTimeRange
from dateutil.relativedelta import relativedelta

time_range = DateTimeRange("2015-01-01T00:00:00+0900", "2016-01-01T00:00:00+0900")
for value in time_range.range(relativedelta(months=+4)):
    print value
2015-01-01 00:00:00+09:00
2015-05-01 00:00:00+09:00
2015-09-01 00:00:00+09:00
2016-01-01 00:00:00+09:00

Überlappt sich der Zeitbereich?

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900")
time_range.is_intersection(x)
True

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900")
time_range.intersection(x)
time_range
2015-03-22T10:05:00+0900 - 2015-03-22T10:10:00+0900

Stellen Sie einen Zeitbereich ein, der den Zeitbereich enthält

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
x = DateTimeRange("2015-03-22T10:05:00+0900", "2015-03-22T10:15:00+0900")
time_range.encompass(x)
time_range
2015-03-22T10:00:00+0900 - 2015-03-22T10:15:00+0900

Schneiden Sie den Zeitbereich ab

from datetimerange import DateTimeRange
time_range = DateTimeRange("2015-03-22T10:00:00+0900", "2015-03-22T10:10:00+0900")
time_range.is_output_elapse = True
print "before truncate: ", time_range
time_range.truncate(10)
print "after truncate:  ", time_range
before truncate:  2015-03-22T10:00:00+0900 - 2015-03-22T10:10:00+0900 (0:10:00)
after truncate:   2015-03-22T10:00:30+0900 - 2015-03-22T10:09:30+0900 (0:09:00)

Recommended Posts

Erstellt eine Python-Bibliothek DateTimeRange, die Zeitbereiche verarbeitet
Verwenden Sie networkx, eine Bibliothek, die Diagramme in Python verarbeitet (Teil 2: Lernprogramm).
Erstellt eine Bibliothek für Python, die die morphologische Teilung problemlos handhaben kann
Erstellt Simple SQLite, eine Python-Bibliothek, die das Erstellen / Einfügen von SQLite-Tabellen vereinfacht
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
[Python] Eine praktische Bibliothek, die Kanji in Hiragana konvertiert
Veröffentlichen / Hochladen einer in Python erstellten Bibliothek in PyPI
Veröffentlichung einer Bibliothek, die Zeichendaten in Python-Bildern verbirgt
Python-Programm, das die Zeitnutzung aus icalendar-Daten aggregiert
Verwenden Sie Pymol als Python-Bibliothek
Ein Memo, das doppelte Anführungszeichen in voller Breite mit regulären Python-Ausdrücken verarbeitet
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Über psd-tools, eine Bibliothek, die psd-Dateien in Python verarbeiten kann
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Generieren Sie das Display-Abzeichen für die Download-Anzahl der Python-Bibliotheken
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
Ein Hinweis zu Mock (Python-Mock-Bibliothek)
Ich habe eine generische Python-Projektvorlage erstellt
Einführung einer Bibliothek, die unter Python / Windows nicht in pip enthalten war
Erstellt Go-Bibliothek nzargv, die Befehlszeilenargumente gut anordnet
[Python] Ich habe einen Twitter-Bot erstellt, der freundschaftliche Tweets mit Markov-Kettenregeln generiert.
Versuchen Sie es mit APSW, einer Python-Bibliothek, die SQLite ernst nehmen kann
Verwendung von hmmlearn, einer Python-Bibliothek, die versteckte Markov-Modelle realisiert
Code lesen von faker, einer Bibliothek, die Testdaten in Python generiert
Reverse Reference der Python-Datums- / Zeitbibliothek
[Python] Ein Programm, das Treppen mit # erstellt
Erstellt eine Reise von Darts mit Python (Nachrichten)
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
[Python] Erstellen Sie einen LineBot, der regelmäßig ausgeführt wird
Eine typisierte Welt, die mit Python beginnt
Ein Programm, das Python zum Abspielen von Junk verwendet
Ich habe ein Passwort-Tool in Python erstellt.
[Python] Ein Programm, das die Partitur rundet
So installieren Sie die Python-Bibliothek, die von Pharmaunternehmen verwendet werden kann
Ein Programm, das von Python zu einem bestimmten Zeitpunkt eine feste E-Mail-Menge sendet
Python: Zeitreihenanalyse: Erstellen eines SARIMA-Modells
Erstellt einen Python-Wrapper für die Qiita-API
Ein Memo, das ich schnell in Python geschrieben habe
[Python] Ein Tool, das einen intuitiven relativen Import ermöglicht
[Python3] Eine Geschichte, die bei der Zeitzonenkonvertierung steckt
[Python / Tkinter] Eine Klasse, die einen scrollbaren Frame erstellt
Ein netter Nimporter, der Nim und Python verbindet
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
Ein Programm, das doppelte Anweisungen in Python entfernt
Veröffentlichen Sie ein Python-Modul, das meteorologische Elemente berechnet
Eine clevere Möglichkeit zur Zeitverarbeitung mit Python
"Python Kit", das Python-Skripte von Swift aufruft
Python: Erstellen Sie eine Klasse, die entpackte Zuweisungen unterstützt
Ein Memorandum über die Python-Tesseract-Wrapper-Bibliothek
Vim-Plug-In, das automatisch Python-Stile formatiert
Einfache Aufgabenliste, erstellt mit Python + Django
Erstellt eine Python-Bibliothek, um komplexe Einschlüsse zu schreiben und auf einfach zu lesende Weise zu reduzieren
Ein Hinweis zur Bibliotheksimplementierung, in der Hyperparameter mithilfe der Bayes'schen Optimierung in Python untersucht werden
Ein Python-Skript, das die Start- / Endzeit des Mac für die Anwesenheitsverwaltung verwenden möchte