যুগের সময়
সাধারণভাবে, সময়কে গণনা করা সবচেয়ে সহজ তবে যদি আমরা প্রথমে সময়কে (ইউনিক্স) যুগে রূপান্তর করি সময়কে (1-1-1970 থেকে সেকেন্ড । পাইথনে, আমাদের কাছে সময়কে সময়কে রূপান্তর করার সরঞ্জাম রয়েছে এবং আমরা যে কোনও তারিখের ফর্ম্যাটে পছন্দ করি।
আমরা কেবল একটি ফর্ম্যাট সেট করতে পারি, যেমন:
pattern = "%Y-%m-%d"
... এবং আজ সংজ্ঞা দিন:
today = "2016-12-07"
এবং পরবর্তীকালে কাজটি করার জন্য একটি ফাংশন লিখুন:
def convert_toepoch(pattern, stamp):
return int(time.mktime(time.strptime(stamp, pattern)))
তারপরে আউটপুট:
nowepoch = convert_toepoch(pattern, today)
print(nowepoch)
> 1481065200
... যা উল্লেখ করা হয়েছে, 1-1-1970 সাল থেকে সেকেন্ডের সংখ্যা
দুটি তারিখের মধ্যে দিন গণনা করা
আমরা যদি আজ এবং আমাদের ভবিষ্যতের তারিখ উভয় ক্ষেত্রে এটি করি তবে পরবর্তীকালে পার্থক্যটি গণনা করুন:
#!/usr/bin/env python3
import time
# set our date pattern
pattern = "%Y-%m-%d"
def convert_toepoch(pattern, stamp):
return int(time.mktime(time.strptime(stamp, pattern)))
# automatically get today's date
today = time.strftime(pattern); future = "2016-12-28"
nowepoch = convert_toepoch(pattern, today)
future_epoch = convert_toepoch(pattern, future)
print(int((future_epoch - nowepoch)/86400))
ফলাফলটি তারিখ অনুসারে গণনা করা হবে , যেহেতু আমরা ফর্ম্যাটটি ব্যবহার করি %Y-%m-%d
। সেকেন্ডে গোল হয় সম্ভবত একটি ভুল তারিখের পার্থক্য দিতে পারে, যদি আমরা উদাহরণস্বরূপ 24 ঘন্টা এর কাছাকাছি থাকি।
টার্মিনাল সংস্করণ
#!/usr/bin/env python3
import time
# set our date pattern
pattern = "%Y-%m-%d"
def convert_toepoch(pattern, stamp):
return int(time.mktime(time.strptime(stamp, pattern)))
# automatically get today's date
today = time.strftime(pattern)
# set future date
future = input("Please enter the future date (yyyy-mm-dd): ")
nowepoch = convert_toepoch(pattern, today)
future_epoch = convert_toepoch(pattern, future)
print(int((future_epoch - nowepoch)/86400))
... এবং Zenity বিকল্প
#!/usr/bin/env python3
import time
import subprocess
# set our date pattern
pattern = "%Y-%m-%d"
def convert_toepoch(pattern, stamp):
return int(time.mktime(time.strptime(stamp, pattern)))
# automatically get today's date
today = time.strftime(pattern)
# set future date
try:
future = subprocess.check_output(
["zenity", "--entry", "--text=Enter a date (yyyy-mm-dd)"]
).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
else:
nowepoch = convert_toepoch(pattern, today)
future_epoch = convert_toepoch(pattern, future)
subprocess.call(
["zenity", "--info",
"--text="+str(int((future_epoch - nowepoch)/86400))
])
এবং শুধু মজা করার জন্য ...
একটি ছোট অ্যাপ্লিকেশন। আপনি যদি প্রায়শই এটি ব্যবহার করেন তবে এটি একটি শর্টকাটে যুক্ত করুন।
এই পান্ডুলিপি:
#!/usr/bin/env python3
import time
import subprocess
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Pango, Gdk
class OrangDays(Gtk.Window):
def __init__(self):
self.pattern = "%Y-%m-%d"
self.currdate = time.strftime(self.pattern)
big_font = "Ubuntu bold 45"
self.firstchar = True
Gtk.Window.__init__(self, title="OrangeDays")
maingrid = Gtk.Grid()
maingrid.set_border_width(10)
self.add(maingrid)
datelabel = Gtk.Label("Enter date")
maingrid.attach(datelabel, 0, 0, 1, 1)
self.datentry = Gtk.Entry()
self.datentry.set_max_width_chars(12)
self.datentry.set_width_chars(12)
self.datentry.set_placeholder_text("yyyy-mm-dd")
maingrid.attach(self.datentry, 2, 0, 1, 1)
sep1 = Gtk.Grid()
sep1.set_border_width(10)
maingrid.attach(sep1, 0, 1, 3, 1)
buttongrid = Gtk.Grid()
buttongrid.set_column_homogeneous(True)
maingrid.attach(buttongrid, 0, 2, 3, 1)
fakebutton = Gtk.Grid()
buttongrid.attach(fakebutton, 0, 0, 1, 1)
calcbutton = Gtk.Button("Calculate")
calcbutton.connect("clicked", self.showtime)
calcbutton.set_size_request(80,10)
buttongrid.attach(calcbutton, 1, 0, 1, 1)
fakebutton2 = Gtk.Grid()
buttongrid.attach(fakebutton2, 2, 0, 1, 1)
sep2 = Gtk.Grid()
sep2.set_border_width(5)
buttongrid.attach(sep2, 0, 1, 1, 1)
self.span = Gtk.Label("0")
self.span.modify_font(Pango.FontDescription(big_font))
self.span.set_alignment(xalign=0.5, yalign=0.5)
self.span.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("#FF7F2A"))
maingrid.attach(self.span, 0, 4, 100, 1)
sep3 = Gtk.Grid()
sep3.set_border_width(5)
maingrid.attach(sep3, 0, 5, 1, 1)
buttonbox = Gtk.Box()
maingrid.attach(buttonbox, 0, 6, 3, 1)
quitbutton = Gtk.Button("Quit")
quitbutton.connect("clicked", Gtk.main_quit)
quitbutton.set_size_request(80,10)
buttonbox.pack_end(quitbutton, False, False, 0)
def convert_toepoch(self, pattern, stamp):
return int(time.mktime(time.strptime(stamp, self.pattern)))
def showtime(self, button):
otherday = self.datentry.get_text()
try:
nextepoch = self.convert_toepoch(self.pattern, otherday)
except ValueError:
self.span.set_text("?")
else:
todayepoch = self.convert_toepoch(self.pattern, self.currdate)
days = str(int(round((nextepoch-todayepoch)/86400)))
self.span.set_text(days)
def run_gui():
window = OrangDays()
window.connect("delete-event", Gtk.main_quit)
window.set_resizable(True)
window.show_all()
Gtk.main()
run_gui()
এটি গুটিয়ে রাখা
নিম্নলিখিত .desktop
ফাইলের উপরে ক্ষুদ্র অ্যাপ্লিকেশন স্ক্রিপ্টের জন্য ব্যবহার করুন:
[Desktop Entry]
Exec=/path/to/orangedays.py
Type=Application
Name=Orange Days
Icon=org.gnome.Calendar