मुझे केवल Django में क्रमशः वर्तमान दिनांक और वर्तमान समय कैसे मिलेगा?


81

मैं इस वर्ग का उपयोग करते समय एक दिलचस्प स्थिति में आया था:

class Company(models.Model):
    date = models.DateField()
    time = models.TimeField()
c = Company(date=datetime.datetime.now(), time=datetime.datetime.now()) 

Django स्वरूपों के फ़ाइल में DATETIME_INPUT_FORMATSपरिभाषित का उपयोग करने का निर्णय लेता है । जो समझ में आता है, क्योंकि मैं दोनों क्षेत्रों में गुजर रहा हूं ।datetime.now()

मुझे लगता है कि मैं Django का उपयोग करने के लिए DATE_INPUT_FORMATSऔर TIME_INPUT_FORMATSक्रमशः कर सकता था, अगर मैं केवल वर्तमान तिथि और वर्तमान समय में पास हुआ।

कुछ इस तरह:

c = Company(date=datetime.date.now(), time=datetime.time.now()) 

लेकिन यह स्पष्ट रूप से एक अपवाद फेंकता है क्योंकि अब ऐसा नहीं है। क्या इसे प्राप्त करने का एक अलग तरीका है?

जवाबों:


146

दिनांक के लिए, आप उपयोग कर सकते हैं datetime.date.today()या datetime.datetime.now().date()

समय के लिए, आप उपयोग कर सकते हैं datetime.datetime.now().time()


हालाँकि, पहली बार में इनके लिए अलग क्षेत्र क्यों हैं? सिंगल का इस्तेमाल क्यों नहीं करते DateTimeField?

आप हमेशा मॉडल पर सहायक कार्यों को परिभाषित कर सकते हैं जो .date()या .time()बाद में वापस आ जाते हैं यदि आप केवल एक या दूसरे को चाहते हैं।


यह एम्बर कई धन्यवाद काम करता है। :) 5 मिनट में स्वीकार कर सकते हैं। जिस तरह से मुझे इसकी आवश्यकता है, वह यह है कि अंतर्राष्ट्रीयकरण और अमेरिकी समय और तारीखों के स्वरूपों को बाकी दुनिया में अनुवादित किया गया है। :)
होउमैन

5
टाइमज़ोन समर्थन के लिए, मुझे लगता है कि यूटीसी डेटाइम को हमेशा स्टोर करने के लिए डेटटाइमफिल्ड का उपयोग करना अभी भी बेहतर है और फिर क्वेरी समय पर वर्तमान टाइमज़ोन पर तारीख स्थानांतरित करें।
जौक

@Kave हाँ, क्या piouk ने कहा। एक DateTimeField का उपयोग करें जो UTC को संग्रहीत करता है और केवल pytzउस समय को प्रदर्शित करने के लिए जाने पर संबंधित समय क्षेत्र (जैसे कुछ का उपयोग करके ) में अनुवाद करता है। न केवल यह भंडारण का एक बेहतर तरीका है, बल्कि आपको मुफ्त में टाइमज़ोन हैंडलिंग भी मिलती है क्योंकि pytzयह आपके लिए पहले से ही लिखा गया था।
अंबर

64
import datetime
datetime.datetime.now().strftime ("%Y%m%d")
20151015

समय के लिए

from time import gmtime, strftime
showtime = strftime("%Y-%m-%d %H:%M:%S", gmtime())
print showtime
2015-10-15 07:49:18


6
 import datetime

वर्तमान दिनांक और समय

     print(datetime.datetime.now())
     #2019-09-08 09:12:12.473393

केवल वर्तमान तिथि

     print(datetime.date.today())
     #2019-09-08

वर्तमान वर्ष ही

     print(datetime.date.today().year)
     #2019

वर्तमान माह ही

     print(datetime.date.today().month)
     #9

केवल वर्तमान दिन

     print(datetime.date.today().day)
     #8

1

मिलीसेकंड के साथ डेटाटाइम UTC पाने का दूसरा तरीका।

from datetime import datetime

datetime.utcnow().isoformat(sep='T', timespec='milliseconds') + 'Z'

2020-10-29T14:46:37.655Z

0

प्रश्न से संबंधित जानकारी ...

Django में, उपयोग timezone.now()datetime क्षेत्र के लिए, Django का समर्थन करता है के रूप में समय क्षेत्र , यह सिर्फ दिनांक के आधार पर रिटर्न USE TZसेटिंग्स, या बस समय क्षेत्र 'जागरूक' datetime वस्तुओं

एक संदर्भ के लिए, मुझे मिल गया है TIME_ZONE = 'Asia/Kolkata'और USE_TZ = True,

from django.utils import timezone
import datetime

print(timezone.now())  # The UTC time
print(timezone.localtime())  # timezone specified time, 
print(datetime.datetime.now())  # default local time

# output
2020-12-11 09:13:32.430605+00:00
2020-12-11 14:43:32.430605+05:30  # IST is UTC+5:30
2020-12-11 14:43:32.510659

अधिक विवरण के लिए django डॉक्स में टाइमज़ोन सेटिंग्स और अंतर्राष्ट्रीयकरण और स्थानीयकरण का संदर्भ लें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.