মাইক্রোসেকেন্ড পেতে পাইথনে স্ট্রফটাইম () সহ% f ব্যবহার করা


112

আমি মাইক্রোসেকেন্ড নির্ভুলতার জন্য স্ট্রফটাইম () ব্যবহার করার চেষ্টা করছি, যা% f ( এখানে বলা আছে ) ব্যবহার করে সম্ভব বলে মনে হচ্ছে । তবে আমি যখন নিম্নলিখিত কোডটি চেষ্টা করি:

import time
import strftime from time

print strftime("%H:%M:%S.%f")

... আমি ঘন্টা, মিনিট এবং সেকেন্ড পেয়েছি, তবে% f টি মাইক্রোসেকেন্ডের চিহ্ন ছাড়াই% f হিসাবে মুদ্রণ করে। আমি উবুন্টুতে পাইথন ২.6.৫ চালাচ্ছি, সুতরাং এটি ঠিকঠাক হওয়া উচিত এবং% f সাপোর্ট করা উচিত (এটি 2.6 এবং এর উপরে সমর্থিত, যতদূর আমি জানি))

উত্তর:


181

এটি পেতে আপনি ডেটটাইমের স্ট্রফটাইম ফাংশন ব্যবহার করতে পারেন। সমস্যাটি হ'ল সময়ের স্ট্রাইফটাইম এমন টাইমটুপল গ্রহণ করে যা মাইক্রোসেকেন্ডের তথ্য বহন করে না।

from datetime import datetime
datetime.now().strftime("%H:%M:%S.%f")

কৌতুক করা উচিত!


1
আপনি যদি ব্যবহার করতে চান তবে নয়%z
ভালেন্টিন

@ ভালেনটিন এটি সম্পূর্ণ বিপরীত! সময় প্রদর্শিত না হলেও নির্দেশকে datetime সমর্থন করে%z
অ্যাডামনফিশ

%zপাইথন 3 :-) উভয় সমর্থন এখানে তারিখ সময়
adamnfish

ওহ, আপনি ঠিক বলেছেন। এটি ডেটটাইমে মিস করেছি কারণ এটি নীচে ছিল না, যেমন সময়ের জন্য টেবিলে। : পি
ভালেন্টিন

6
নোট from datetime import datetime। আপনি যদি কেবল এটি করেন তবে আপনাকে import datetimeব্যবহার করতে হবেdatetime.datetime.now().strftime("%H:%M:%S.%f")
জেব্যাকজুক

34

আপনি ভুল ডকুমেন্টেশন খুঁজছেন। timeমডিউল বিভিন্ন ডকুমেন্টেশন হয়েছে

আপনি datetimeমডিউলটি এটির strftimeমতো ব্যবহার করতে পারেন :

>>> from datetime import datetime
>>>
>>> now = datetime.now()
>>> now.strftime("%H:%M:%S.%f")
'12:19:40.948000'


পোস্টের জন্য ধন্যবাদ. একটি ডেটটাইম এবং টাইম মডিউল কেন আছে?
tommy.carstensen


9

পাইথনের timeমডিউল সহ আপনি মাইক্রোসেকেন্ডগুলি পেতে পারেন না %f

যারা এখনও timeকেবলমাত্র মডিউল নিয়ে যেতে চান , তাদের জন্য এখানে একটি কার্যকারিতা রয়েছে:

now = time.time()
mlsec = repr(now).split('.')[1][:3]
print time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), time.localtime(now))

আপনার 2017-01-16 16: 42: 34.625 EET এর মতো কিছু পাওয়া উচিত (হ্যাঁ, আমি মিলিসেকেন্ডগুলি যথেষ্ট হিসাবে এটি ব্যবহার করি)।

বিশদে কোডটি ভাঙতে নীচের কোডটি একটি পাইথন কনসোলে পেস্ট করুন:

import time

# Get current timestamp
now = time.time()

# Debug now
now
print now
type(now)

# Debug strf time
struct_now = time.localtime(now)
print struct_now
type(struct_now)

# Print nicely formatted date
print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now)

# Get miliseconds
mlsec = repr(now).split('.')[1][:3]
print mlsec

# Get your required timestamp string
timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now)
print timestamp

স্পষ্টকরণের উদ্দেশ্যে, আমি আমার পাইথন ২.7.১২ ফলাফলটি এখানেও পেস্ট করেছি:

>>> import time
>>> # get current timestamp
... now = time.time()
>>> # debug now
... now
1484578293.519106
>>> print now
1484578293.52
>>> type(now)
<type 'float'>
>>> # debug strf time
... struct_now = time.localtime(now)
>>> print struct_now
time.struct_time(tm_year=2017, tm_mon=1, tm_mday=16, tm_hour=16, tm_min=51, tm_sec=33, tm_wday=0, tm_yday=16, tm_isdst=0)
>>> type(struct_now)
<type 'time.struct_time'>
>>> # print nicely formatted date
... print time.strftime("%Y-%m-%d %H:%M:%S %Z", struct_now)
2017-01-16 16:51:33 EET
>>> # get miliseconds
... mlsec = repr(now).split('.')[1][:3]
>>> print mlsec
519
>>> # get your required timestamp string
... timestamp = time.strftime("%Y-%m-%d %H:%M:%S.{} %Z".format(mlsec), struct_now)
>>> print timestamp
2017-01-16 16:51:33.519 EET
>>>

6

এটি কাজ করা উচিত

import datetime
datetime.datetime.now().strftime("%H:%M:%S.%f")

এটি মুদ্রণ করবে

HH:MM:SS.microseconds যেমন যেমন 14:38:19.425961


5

আপনি timeমডিউলটির time()কার্যকারিতাটি ব্যবহার করে মাইক্রোসেকেন্ড নির্ভুলতা পেতে পারেন ।
( time.time()যুগের পর থেকে সেকেন্ডের মধ্যে সময়টি ফিরে আসে Its এর ভগ্নাংশের অংশটি মাইক্রোসেকেন্ডে সময় হয় যা আপনি চান want)

>>> from time import time
>>> time()
... 1310554308.287459   # the fractional part is what you want.


# comparision with strftime -
>>> from datetime import datetime
>>> from time import time
>>> datetime.now().strftime("%f"), time()
... ('287389', 1310554310.287459)

1
চমৎকার। সব আপনার সাহায্যের জন্য ধন্যবাদ। আমি জিনিসগুলি কাজ করতে সক্ষম হয়েছি, যদিও এটি একটি অদ্ভুত বাগের সন্ধান পেয়েছে যার অর্থ কোনও নির্দিষ্ট সিসেটে সুডো হিসাবে স্ক্রিপ্টটি চালানোর সময় মাইক্রোসেকেন্ডগুলি উপস্থিত হয় না তবে কোনও নির্দিষ্ট সিসেটে এটি চালানোর চেষ্টা করার আগে যদি আমি সুডো হিসাবে লগ ইন করি তবে তা করুন। অস্বাভাবিক.
ব্যবহারকারী 820924

4

যখন মাইক্রো সেকেন্ডের জন্য "% f" কাজ করছে না, দয়া করে নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন:

import datetime

def getTimeStamp():
    dt = datetime.datetime.now()
    return dt.strftime("%Y%j%H%M%S") + str(dt.microsecond)

3
Dt.microsecond এর 6 টিরও কম সংখ্যা থাকলে এটি কাজ করবে না।
এম 456

3
এটিই ছিল একমাত্র সমাধান যা আসলে আমার পক্ষে কাজ করেছিল। উইন্ডোজ% জে জাইথনে সর্বদা আক্ষরিক% f মুদ্রণ করা হয় বলে মনে হয়। আমি মিলিসেকেন্ডগুলি তাই ব্যবহৃত ব্যবহৃত (ডিটি.মাইক্রোসেকেন্ড) চেয়েছিলাম [0: 3]
এড র্যান্ডাল

1
str (dt.microsecond) [0: 3] একটি ভুল ফলাফল তৈরি করতে পারে (উদাহরণস্বরূপ 300 মাইক্রোসেকেন্ডগুলি 0.300 মিলি সেকেন্ড, তবে এটি 300 টি মুদ্রণ করবে!)
ক্যাবিবি

3
"% 03 ডি"% ইন্ট (dt.microsecond / 1000) -> এটি মিলসেকেন্ডগুলি মুদ্রিত করে মাইক্রোসেকেন্ডগুলি নয়
ক্যাবি

0

আপনি যদি গতি চান, এটি চেষ্টা করুন:

def _timestamp(prec=0):
    t = time.time()
    s = time.strftime("%H:%M:%S", time.localtime(t))
    if prec > 0:
        s += ("%.9f" % (t % 1,))[1:2+prec]
    return s

precযথার্থতা কোথায় - আপনি কত দশমিক স্থান চান। দয়া করে মনে রাখবেন যে এখানে উপস্থাপন করা অন্যান্য সমাধানগুলির মতো ক্রিয়াকলাপে নেতৃস্থানীয় শূন্যগুলি নিয়ে সমস্যা নেই।


-1

আপনি যদি পূর্ণসংখ্যার চান তবে এই কোডটি ব্যবহার করে দেখুন:

import datetime
print(datetime.datetime.now().strftime("%s%f")[:13])

আউটপুট:

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