পাইথনে ইউটিসির সময় কীভাবে পাবেন?


112

আমি সমাধানের জন্য স্ট্যাক এক্সচেঞ্জে একটি গুচ্ছ সন্ধান করেছি তবে আমার যা প্রয়োজন তা কিছুই করেন না। জাভাস্ক্রিপ্টে, আমি 1 ই জানুয়ারী 1970 থেকে ইউটিসি সময় গণনা করতে নিম্নলিখিতটি ব্যবহার করছি:

function UtcNow() {
    var now = new Date();
    var utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
    return utc;
}

পাইথন কোডের সমতুল্য কী হবে?



অপেক্ষা করুন, আপনি কি পাইথন বা জাভাস্ক্রিপ্ট ব্যবহার করছেন?
চিটসিট ওভারলোড

উত্তর:


178

এই কোডটি ব্যবহার করুন যা ডেটটাইম.টুকন ব্যবহার করে () :

from datetime import datetime
datetime.utcnow()

আপনার উদ্দেশ্যগুলির জন্য যখন আপনাকে দুটি তারিখের মধ্যে ব্যয় করা পরিমাণের গণনা করা দরকার তখন আপনার শেষটি সংগ্রহ করতে এবং তারিখগুলি শুরু করতে হয়। এই জাতীয় বিয়োগের ফলাফলগুলি একটি টাইমডেল্টা অবজেক্ট।

পাইথন ডক্স থেকে:

class datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

এবং এর অর্থ হ'ল ডিফল্টরূপে আপনি এর সংজ্ঞাটিতে উল্লিখিত যে কোনও ক্ষেত্র পেতে পারেন - দিন, সেকেন্ড, মাইক্রোসেকেন্ড, মিলিসেকেন্ড, মিনিট, ঘন্টা, সপ্তাহ। এছাড়াও টাইমডেল্টা উদাহরণটিতে মোট_ সেকেন্ড () পদ্ধতি রয়েছে যা:

পিরিয়ডে থাকা মোট সেকেন্ডের সংখ্যাটি ফিরিয়ে দিন। (টিডি। মাইক্রোসেকেন্ডস + (টিডি.সেকেন্ডস + টিডি.ডেসস ২৪ * ৩ 36০০) * ১০ * 6) / 10 * 6 এর সাথে সত্যিকারের বিভাগ সক্ষম হয়েছে with


2
ডেটটাইম.টুকনো () সম্পর্কে সম্ভবত বাজে আশ্চর্য হ'ল নাম সত্ত্বেও টাইমজোন-সচেতন বস্তুটি ফিরে আসে না। এটি আমার মতে একটি বড় সমস্যা, এজন্য আমি নীচে আমার উত্তরটি পছন্দ করি। "কোনও টাইমজোনবিহীন ডেটটাইম অবজেক্টগুলিকে অ্যাপ্লিকেশনটিতে" বাগ "হিসাবে বিবেচনা করা উচিত See" দেখুন। julien.danjou.info/python- এবং- টাইমজোনস
টিম রিচার্ডসন

1
তথাকথিত নিষ্পাপ ডেটটাইম অবজেক্টের ধারণা (অর্থাত্ কোনও টাইমজোন তথ্য সেট করা হয়নি) একটি উদ্দেশ্য করে: আমি চাই যে আমার অ্যালার্ম ঘড়িটি প্রতিদিন 06:00:00 এ বেজে উঠুক আমি বিশ্বের যেই দেশেই থাকি না কেন। এছাড়াও এটি কম্পিউটার গেমস বলতে "ভার্চুয়াল ক্লকগুলি" মঞ্জুরি দেয়: আমার কল্পনার জগতে এখন 5 টা বাজে। ডেটটাইম অবজেক্টে টাইমজোন জোর করা বিশ্রী হবে, বিশেষত টাইমডেলটা পাটিগণিতের সাথে।
ডাস্টবাইট

42

আপনার মূলের নিকটতম ফর্মটিতে:

import datetime

def UtcNow():
    now = datetime.datetime.utcnow()
    return now

আপনি যদি নেটিভ পাইথনের চেয়ে 1970-01-01 থেকে সেকেন্ডের সংখ্যা জানতে চান তবে datetimeপরিবর্তে এটি ব্যবহার করুন:

return (now - datetime.datetime(1970, 1, 1)).total_seconds()

পাইথনের নামকরণের সম্মেলন রয়েছে যা জাভাস্ক্রিপ্টে আপনার ব্যবহৃত হতে পারে তার সাথে মতবিরোধ রয়েছে, পিইপি 8 দেখুন । এছাড়াও, এমন একটি ফাংশন যা কেবলমাত্র অন্য ফাংশনটির ফলাফল দেয় কেবল নিরীহ; যদি এটি কেবল আরও অ্যাক্সেসযোগ্য করার বিষয় হয় তবে আপনি কোনও ক্রিয়াকলাপের জন্য কেবল এটি বরাদ্দ করে অন্য নাম তৈরি করতে পারেন। উপরের প্রথম উদাহরণটির সাথে প্রতিস্থাপন করা যেতে পারে:

utc_now = datetime.datetime.utcnow

1
আমি আপনার উত্তর উপরের থেকে উচ্চতর রেট দেওয়া চেয়ে ভাল পছন্দ করি। এখানে গভীরতার জন্য আপনাকে ধন্যবাদ।
জর্দান ডি-ম্যাটসন

@ জর্দান, আমার উত্তরের দিকে ফিরে তাকিয়ে আমি বুঝতে পারি যে আমদানিটি বিশ্ব স্তরের পরিবর্তে ফাংশনের ভিতরে রেখে আমি একটি স্টাইলিস্টিক ভুল করেছি, আমি এখনই এটি ঠিক করতে চলেছি।
মার্ক রান্সম

8
হয়ত আপনার অন্য ফাংশনে ইউটনউ () মোড়ানো বিবেচনা করা উচিত। এটা ঠিক খুব সহজ। আন্ডারস্কোর ব্যবহার করবেন না। পিইপি 8 এত বিরক্তিকর ...
ভেকেরেল

1
একটি সাধারণ ওয়ান-লাইনার ফিরে আসার জন্য অবশ্যই কোনও ফাংশন লেখার দরকার নেই ...
ডেটটাইম.ডেটটাইম.টকনো

1
@ টিমরিচার্ডসন আমি দ্বিমত পোষণ করি না, তবে এই উত্তরটি লেখার সময় কোনও বিকল্প ছিল না - পাইথন কোনও tzinfoজিনিস এমনকি ইউটিসির জন্যও অন্তর্ভুক্ত করেনি ।
মার্ক র্যানসোম

31

সহজ, স্ট্যান্ডার্ড লাইব্রেরি শুধুমাত্র আধুনিক অজগর জন্য। বিপরীতভাবে সময় অঞ্চল-সচেতন তারিখের সময় দেয় datetime.utcnow()datetimesসময় অঞ্চল ছাড়া দুর্ঘটনা ঘটতে অপেক্ষা করছে।

from datetime import datetime,timezone
now_utc = datetime.now(timezone.utc)

5
পাইথন 3 ডকুমেন্টেশন অনুসারে এটি এটি করার প্রস্তাবিত উপায়।
রোস্কাকোরি

পরিষ্কার এবং সহজ! পছন্দসই উপায় হওয়া উচিত।
35 বিবাহ করুন

21
import datetime
import pytz

# datetime object with timezone awareness:
datetime.datetime.now(tz=pytz.utc)

# seconds from epoch:
datetime.datetime.now(tz=pytz.utc).timestamp() 

# ms from epoch:
int(datetime.datetime.now(tz=pytz.utc).timestamp() * 1000) 

10

ডেটটাইম.ডেটটাইম থেকে আপনি ইতিমধ্যে পদ্ধতি স্ট্রফটাইম সহ টাইমস্ট্যাম্পগুলিতে রফতানি করতে পারেন। আপনার ফাংশন উদাহরণ অনুসরণ:

import datetime
def UtcNow():
    now = datetime.datetime.utcnow()
    return int(now.strftime("%s"))

আপনি যদি মাইক্রোসেকেন্ড চান, আপনার রফতানি স্ট্রিং পরিবর্তন করতে হবে এবং ভাসমান কাস্ট করতে হবে: return float(now.strftime("%s.%f"))


আপনি যখন সরাসরি নম্বরটি পেতে পারেন তখন কোনও স্ট্রিংয়ে রূপান্তরিত করার পরে কী কোনও সংখ্যায় ফিরে যান?
মার্ক রান্সম

time.time()মুল বক্তব্যটি হ'ল আপনি ফাংশনটিতে জিনিসগুলি পরিবর্তন করতে চাইতে পারেন এবং সেই কারণে ডেটটাইম অবজেক্টের সাথে ভাল ব্যবহার করা উচিত , ব্যবহার না করে আপনি টাইম.এমকিটাইম (now.Timetuple ()) সরাসরি ইন-তে রূপান্তর করতেও ব্যবহার করতে পারেন। যাইহোক, এই সাধারণ ক্ষেত্রে time.time()জন্য একটি বৈধ বিকল্প। আমি কী অদ্ভুত বলে মনে করি, সেকেন্ড সন্ধান করতে টাইমডেল্টায় যাচ্ছি।
হেক্টরক্যান্টো

দ্রষ্টব্য, এটি strftime("%s")প্ল্যাটফর্ম নির্ভর এবং উইন্ডোজে কাজ করে না। (কমপক্ষে এটি উইন্ডোজ 10 এ আমার পক্ষে নয়)।
জুলিয়ান কির্শ

8

শূন্য বাহ্যিক নির্ভরতা সহ টাইমজোন সচেতন:

from datetime import datetime, timezone

def utc_now():
    return datetime.utcnow().replace(tzinfo=timezone.utc)

-4

পাইথন 3 এ ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে চেষ্টা করুন;

from datetime import datetime
utc_now = lambda : datetime.utcnow()

এবং সাধারণত ফাংশন কল;

print(utc_now())

2
বাচ্চাদের এখনই সুন্দর
হোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.