পাইথনে মিলিসেকেন্ডে বর্তমান সময় পাবেন?


531

পাইথনের মিলিসেকেন্ডে আমি কীভাবে বর্তমান সময় পেতে পারি?


67
import time; ms = time.time()*1000.0
স্যাম্পেলবায়াস

4
@ স্যাম্পলবায়াস: কিছু প্ল্যাটফর্ম এবং পাইথন সংস্করণগুলির time.time()চেয়ে খারাপ নির্ভুলতা সরবরাহ করতে পারে datetime.utcnow()
jfs

5
মিলিসেকেন্ডে কবে থেকে ? যদি আপনি পর্বের সময় থেকেই বোঝাচ্ছেন (মধ্যরাত 1 জানুয়ারী 1970 উটসি), দেখুন এটি: স্ট্যাকওভারফ্লো
মাইকেল শ্যাপার

2
সত্যিকারের মাইক্রোসেকেন্ড-রেজোলিউশন মিলি সেকেন্ডের সময় স্ট্যাম্পগুলি এখানে দেখুন: স্ট্যাকওভারফ্লো.com
গ্যাব্রিয়েল স্ট্যাপলস

উত্তর:


709

আমার যা প্রয়োজন, তার জন্য উপরের @ স্যাম্পেলবিয়ার মন্তব্যের ভিত্তিতে আমি যা করেছি তা এখানে:

import time
millis = int(round(time.time() * 1000))
print millis

Quick'n'easy। সকলকে ধন্যবাদ, মস্তিষ্কের উচ্ছ্বাসের জন্য দুঃখিত

পুনঃব্যবহারের জন্য:

import time

current_milli_time = lambda: int(round(time.time() * 1000))

তারপর:

>>> current_milli_time()
1378761833768

34
এটি সঠিক উত্তর নাও দিতে পারে। দস্তাবেজগুলির মতে, "নোট করুন যে সময়টি সবসময় ভাসমান পয়েন্ট সংখ্যা হিসাবে ফিরে আসে, সমস্ত সিস্টেম 1 সেকেন্ডের চেয়ে ভাল নির্ভুলতার জন্য সময় সরবরাহ করে না"
জেসন পোলাইটস

11
আমি ভাবছি, আপনার দরকার কেন round? মনে int(time.time() * 1000)হচ্ছে যথেষ্ট?
ম্যাক্সিম ভ্লাদিমিরস্কি

14
আইএমও আমি মেঝে ব্যবহার করব এবং গোল নয়, তবে এটি কেবল আমার me কেউ জিজ্ঞেস করে কি ঘন্টা, এবং এটা 7:32 থাকলে, সংখ্যা তারা সম্ভবত চান 7 8., না
davr

1
@ প্যারালাল ইউনভারসি: উইন্ডোজ এর সাম্প্রতিক সিপাইথনে .utcnow()ব্যবহার GetSystemTimeAsFileTime()করেtime.clock()( QueryPerformanceCounter()) এটি কমিয়ে দেওয়ার চেয়ে বেশি শব্দ প্রবর্তন করবে না ? দেখুন যথার্থ সঠিকতা হিসাবে একই নয়
jfs

10
পুনঃটুইট করেছেন: ম্যাক্সিমভ্লাদিমিরস্কি এটি ইন্ট () এর আচরণ নয়। ইন্ট কোনও মান মেলে না, এটি শূন্যের দিকে গোল করে। ধনাত্মক সংখ্যার জন্য এটি একই জিনিস, তবে negativeণাত্মক হিসাবে বিপরীত। int (1.5) 1 দেয়, int (-1.5) দেয় -1 দেয়, math.floor (-1.5) -2 দেয়: দেখুন: docs.python.org/2/library/stdtypes.html
হফম্যান

91

time.time()কেবলমাত্র দ্বিতীয়টিকে রেজোলিউশন দিতে পারে, মিলিসেকেন্ডগুলির জন্য পছন্দসই পদ্ধতি datetime

from datetime import datetime
dt = datetime.now()
dt.microsecond

94
বেশ কার্যকর নয় - এটি আপনাকে কেবলমাত্র ডিটি-র সেকেন্ডের মধ্যে মাইক্রোসেকেন্ড দেয় । দেখতে stackoverflow.com/a/1905423/74632
বরিস Chervenkov

8
+1 কারণ এটি সিস্টেম থেকে একটি নির্ভরযোগ্য টাইমস্ট্যাম্প পাওয়ার আনুষ্ঠানিক উপায়।
পাসকাল

16
-1। এটি এই প্রশ্নের একটি ভুল উত্তর। @ বরিস মন্তব্য হিসাবে, এটি "মাইক্রোসেকেন্ডে সময়" দেয় না, যেমন মাইক্রোসেকেন্ডের সংখ্যায় দিন, ঘন্টা, সেকেন্ড অন্তর্ভুক্ত করে না।
জা

3
+1 এটি একটি সঠিক মান দেয় এবং গণিতের কারণেই গণিতটি ধরে নেওয়া যায়। ব্যবহারকারীর যদি বর্তমান সময়ের মিলি সেকেন্ড / মাইক্রোসেকেন্ডে প্রয়োজন হয়, সাধারণ গাণিতিক সেগুলি সেগুলিতে পাবেন। যদি একটি সময় ব-দ্বীপের প্রয়োজন হয় - যা জন্য জিজ্ঞাসা করা হয় না - পাটিগণিত, আবার, দিনটি সংরক্ষণ করে।
জ্যাক স্টাউট

3
পুরো টাইমস্ট্যাম্প নয়, বর্তমান সময়ের মাইক্রোসেকেন্ড দেয়।
কাওয়াদিয়া 21

48
def TimestampMillisec64():
    return int((datetime.datetime.utcnow() - datetime.datetime(1970, 1, 1)).total_seconds() * 1000) 

3
আপনি আরও .total_seconds()ভাল নির্ভুলতা তৈরি করার জন্য সূত্রটি ইনলাইন করতে পারেন : (td.microseconds + (td.seconds + td.days * 86400) * 10**6) / 10**3(সত্য বিভাগটি সক্ষম করে) অথবা আপনি যদি মিলিসেকেন্ডগুলি কেটে ফেলতে চান তবে ব্যবহার করুন // 10**3
jfs


35

থেকে সংস্করণ 3.7 আপনি ব্যবহার করতে পারেন time.time_ns()যুগান্তকারী থেকে পাশ ন্যানো সেকেন্ড সময় পাবেন। সুতরাং আপনি করতে পারেন

ms = time.time_ns() // 1000000 

পূর্ণসংখ্যার হিসাবে মিলি-সেকেন্ডে সময় পেতে


এটি আমার পক্ষে সবচেয়ে ভাল কাজ করেছে (পাইথন ৩.7..6)
পল ওয়াটসন


13

আরেকটি সমাধান হ'ল ফাংশন যা আপনি নিজের ইউস.পি.এম. এম্বেড করতে পারেন

import time as time_ #make sure we don't override time
def millis():
    return int(round(time_.time() * 1000))

12

আপনি যদি আপনার কোডটিতে এমন একটি সহজ পদ্ধতি চান যা তা ডেটটাইমের সাথে মিলিসেকেন্ডগুলি প্রদান করে:

from datetime import datetime
from datetime import timedelta

start_time = datetime.now()

# returns the elapsed milliseconds since the start of the program
def millis():
   dt = datetime.now() - start_time
   ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0
   return ms

এটি মিলিসেকেন্ডে দু'বারের মধ্যে পার্থক্য, আপনার পদ্ধতিটি @ জেসন এস এর উত্তরের সাথে একত্রিত করে বর্তমান টাইমস্ট্যাম্পটি মিলি সেকেন্ডে দেয় ... এটির কথা চিন্তা করে, ইউনিক্স টাইমস্ট্যাম্পটি start_time= ডেটটাইম (1970,1,1)
পিআর

স্থানীয় সময় অস্পষ্ট এবং একঘেয়েমি হতে পারে (ডিএসটি স্থানান্তর বা স্থানীয় ইউএসসি অফসেট পরিবর্তনের অন্যান্য কারণে)। .utcnow()পরিবর্তে ব্যবহার করুন বা আপনার যদি নিরঙ্কুশ সময় প্রয়োজন না হয় তবে আপনি ব্যবহার করতে পারেন time.monotonous()। দ্রষ্টব্য: সত্যিকারের বিভাগ সক্ষম করার সাথে some_int + dt.microseconds/ 1000.0সূত্রের মধ্যে ভাসমান-পয়েন্ট গণিতের কারণে একটি সূক্ষ্ম পার্থক্য রয়েছে ( ) / 10**3সম্পর্কিত উত্তরের সুস্পষ্ট সূত্র এবং লিঙ্কটিtotal_seconds()
jfs

7

বর্তমান ইউটিসি সময়টি মিলি সেকেন্ডে পাওয়ার সহজতম উপায়টি হ'ল:

# timeutil.py
import datetime


def get_epochtime_ms():
    return round(datetime.datetime.utcnow().timestamp() * 1000)

# sample.py
import timeutil


timeutil.get_epochtime_ms()

7

যদি আপনি অতিবাহিত সময় পরিমাপ সম্পর্কে উদ্বিগ্ন হন তবে আপনার একঘেয়ে ঘড়িটি ব্যবহার করা উচিত (পাইথন 3) । এই ঘড়িটি সিস্টেমের ক্লক আপডেটগুলি দ্বারা প্রভাবিত হয় না যেমন আপনি দেখতে পাবেন যে কোনও এনটিপি কোয়েরি আপনার সিস্টেমের সময়টি সামঞ্জস্য করে কিনা।

>>> import time
>>> millis = round(time.monotonic() * 1000)

এটি সেকেন্ডে একটি রেফারেন্স সময় সরবরাহ করে যা অতিবাহিত সময় পরিমাপের জন্য পরে তুলনা করতে ব্যবহার করা যেতে পারে।


4

আপনি যদি আমার কোড ব্যবহার করেন (নীচে), সময়টি সেকেন্ডে প্রদর্শিত হবে, তারপরে, দশমিক, মিলিসেকেন্ডের পরে। আমি মনে করি যে উইন্ডোজ এবং ইউনিক্সের মধ্যে পার্থক্য রয়েছে - দয়া করে মন্তব্য করুন।

from time import time

x = time()
print(x)

আমার ফলাফল (উইন্ডোজে) ছিল:

1576095264.2682993

সম্পাদনা : কোনও পার্থক্য নেই :) ধন্যবাদ tc0nn


1
ম্যাক ওএসএক্স-তে কোনও পার্থক্য নেই:/usr/local/opt/python/bin/python3.7 scratch.py 1577212639.882543
tc0nn

1
উবুন্টু 18 তে কোনও পার্থক্য নেই:python3 scratch.py 1577212763.9136133
tc0nn

1

মিলিসেকেন্ডের জন্য 1000 এ এই গুণগুলি সমাধান করা বা কিছু পূর্বশর্ত গ্রহণযোগ্য করার জন্য শালীন হতে পারে। এটি আপনার ডাটাবেসে কোনও শূন্যস্থান পূরণ করতে ব্যবহৃত হতে পারে যা এটি কখনও ব্যবহার করে না। যদিও, বাস্তব পরিস্থিতির জন্য যা যথাযথ সময় প্রয়োজন এটি শেষ পর্যন্ত ব্যর্থ হবে। আমি মিশন-সমালোচনামূলক ক্রিয়াকলাপগুলির জন্য কাউকে এই পদ্ধতিটি ব্যবহার করার পরামর্শ দেব না যার জন্য ক্রিয়াকলাপের প্রয়োজন হয় বা নির্দিষ্ট সময়ে প্রক্রিয়াজাতকরণ প্রয়োজন।

উদাহরণস্বরূপ: রাউন্ড-ট্রিপ পিংসগুলি মার্কিন যুক্তরাষ্ট্রে 30-80 মিমি অবধি রয়েছে ... আপনি কেবল এটি গোল করে দক্ষতার সাথে ব্যবহার করতে পারবেন না।

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

কেবলমাত্র এটি ব্যবহার করে না এমন একটি ডাটাবেস ফাঁক সমাধানের বাইরে আরও সঠিক যুক্তির সন্ধানের জন্য কেবল মানুষের চিন্তাভাবনা।


2
আপনার কি আরও ভাল সমাধান আছে? এছাড়াও সত্যই, আপনি যা বলছেন তা আমি পাই না। "রাউন্ড আপ" বলতে কী বোঝ?
অবর্ণনীয় রাত

2
আরও ভাল বোঝার জন্য ব্যবহারিক উদাহরণ সহ আপনার সমাধানটি ব্যাখ্যা করুন
রতন উদয় কুমার

0

datetimeপাইথন 3-এর মডিউলটি ব্যবহার করে কেবল একটি আর সমাধান ।

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