شیءهای DateTime¶
اشیاء مختلف تاریخ و زمان توسط ماژول datetime فراهم میشوند. پیش از استفاده از هر یک از این توابع، پروندهی سرآیند datetime.h باید در کد منبع شما گنجانده شود (توجه داشته باشید که این پرونده توسط Python.h گنجانده نمیشود) و ماکروی PyDateTime_IMPORT باید فراخوانی شود، که معمولاً به عنوان بخشی از تابع مقداردهی اولیه ماژول انجام میشود. این ماکرو یک اشارهگر به یک ساختار C را در یک متغیر ایستا، PyDateTimeAPI، قرار میدهد که توسط ماکروهای زیر استفاده میشود.
-
PyDateTime_IMPORT()¶
ایمپورت کردن C API مربوط به datetime.
در صورت موفقیت، اشارهگر
PyDateTimeAPIرا پر میکند. در صورت شکست،PyDateTimeAPIرا برابرNULLقرار میدهد و یک استثنا تنظیم میکند. فراخوانکننده باید از طریقPyErr_Occurred()بررسی کند که آیا خطایی رخ داده است:PyDateTime_IMPORT; if (PyErr_Occurred()) { /* cleanup */ }
هشدار
این با زیرمفسرها سازگار نیست.
-
type PyDateTime_CAPI¶
ساختار شامل فیلدهای C API مربوط به datetime.
فیلدهای این ساختار خصوصی هستند و ممکن است تغییر کنند.
از این مستقیماً استفاده نکنید؛ بهجای آن، APIهای
PyDateTime_*را ترجیح دهید.
-
PyDateTime_CAPI *PyDateTimeAPI¶
شیء تخصیصیافته بهصورت پویا که C API مربوط به datetime را در بر میگیرد.
این متغیر تنها پس از موفقیت
PyDateTime_IMPORTدر دسترس است.
-
PyTypeObject PyDateTime_DateType¶
این نمونه از
PyTypeObjectنوع تاریخ پایتون را نمایندگی میکند؛ این همان شیءdatetime.dateدر لایهی پایتون است.
-
PyTypeObject PyDateTime_DateTimeType¶
این نمونه از
PyTypeObjectنمایانگر نوع datetime پایتون است؛ این همان شیءdatetime.datetimeدر لایهی پایتون است.
-
PyTypeObject PyDateTime_TimeType¶
این نمونه از
PyTypeObject، نوع time پایتون را نشان میدهد؛ این همان شیءdatetime.timeدر لایه پایتون است.
-
PyTypeObject PyDateTime_DeltaType¶
این نمونه از
PyTypeObjectنوع پایتونی برای اختلاف بین دو مقدار datetime را نشان میدهد؛ این همان شیءdatetime.timedeltaدر لایه پایتون است.
-
PyTypeObject PyDateTime_TZInfoType¶
این نمونه از
PyTypeObjectنوع اطلاعات منطقه زمانی پایتون را نمایندگی میکند؛ این همان شیءdatetime.tzinfoدر لایه پایتون است.
ماکرو برای دسترسی به تکنمونهی UTC:
-
PyObject *PyDateTime_TimeZone_UTC¶
تکنمونهی منطقهی زمانی UTC را برمیگرداند؛ این همان شیء
datetime.timezone.utcاست.اضافه شده در نسخهی 3.7.
ماکروهای بررسی نوع:
-
int PyDate_Check(PyObject *ob)¶
اگر ob از نوع
PyDateTime_DateTypeیا زیرنوعی ازPyDateTime_DateTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyDate_CheckExact(PyObject *ob)¶
اگر ob از نوع
PyDateTime_DateTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyDateTime_Check(PyObject *ob)¶
اگر ob از نوع
PyDateTime_DateTimeTypeیا زیرنوعی ازPyDateTime_DateTimeTypeباشد، true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه موفق میشود.
-
int PyDateTime_CheckExact(PyObject *ob)¶
اگر ob از نوع
PyDateTime_DateTimeTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyTime_Check(PyObject *ob)¶
اگر ob از نوع
PyDateTime_TimeTypeیا زیرنوعی ازPyDateTime_TimeTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyTime_CheckExact(PyObject *ob)¶
اگر ob از نوع
PyDateTime_TimeTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyDelta_Check(PyObject *ob)¶
اگر ob از نوع
PyDateTime_DeltaTypeیا زیرنوعی ازPyDateTime_DeltaTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت انجام میشود.
-
int PyDelta_CheckExact(PyObject *ob)¶
اگر ob از نوع
PyDateTime_DeltaTypeباشد، true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyTZInfo_Check(PyObject *ob)¶
اگر ob از نوع
PyDateTime_TZInfoTypeیا زیرنوعی ازPyDateTime_TZInfoTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه با موفقیت اجرا میشود.
-
int PyTZInfo_CheckExact(PyObject *ob)¶
در صورتی که ob از نوع
PyDateTime_TZInfoTypeباشد، مقدار true را برمیگرداند. ob نبایدNULLباشد. این تابع همیشه موفق میشود.
ماکروهای ساخت اشیاء:
-
PyObject *PyDate_FromDate(int year, int month, int day)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.dateبا سال، ماه و روز مشخصشده برمیگرداند.
-
PyObject *PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.datetimeبا سال، ماه، روز، ساعت، دقیقه، ثانیه و میکروثانیهی مشخصشده برمیگرداند.
-
PyObject *PyDateTime_FromDateAndTimeAndFold(int year, int month, int day, int hour, int minute, int second, int usecond, int fold)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.datetimeبا سال، ماه، روز، ساعت، دقیقه، ثانیه، میکروثانیه و fold مشخصشده برمیگرداند.اضافه شده در نسخهی 3.6.
-
PyObject *PyTime_FromTime(int hour, int minute, int second, int usecond)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.timeبا ساعت، دقیقه، ثانیه و میکروثانیهی مشخصشده برمیگرداند.
-
PyObject *PyTime_FromTimeAndFold(int hour, int minute, int second, int usecond, int fold)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.timeبا ساعت، دقیقه، ثانیه، میکروثانیه و fold مشخصشده برمیگرداند.اضافه شده در نسخهی 3.6.
-
PyObject *PyDelta_FromDSU(int days, int seconds, int useconds)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.timedeltaبرمیگرداند که نمایانگر تعداد روزها، ثانیهها و میکروثانیههای دادهشده است. نرمالسازی انجام میشود تا تعداد میکروثانیهها و ثانیههای حاصل، در محدودههای مستندشده برای اشیاءdatetime.timedeltaقرار گیرند.
-
PyObject *PyTimeZone_FromOffset(PyObject *offset)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.timezoneبا آفست ثابتِ بینامی که توسط آرگومان offset نمایش داده میشود، برمیگرداند.اضافه شده در نسخهی 3.7.
-
PyObject *PyTimeZone_FromOffsetAndName(PyObject *offset, PyObject *name)¶
- مقدار بازگشتی: مرجع جدید.
یک شیء
datetime.timezoneبا آفست ثابتی که توسط آرگومان offset مشخص شده و با tzname برابر name برمیگرداند.اضافه شده در نسخهی 3.7.
ماکروهایی برای استخراج فیلدها از اشیاء تاریخ. آرگومان باید نمونهای از PyDateTime_Date باشد، از جمله زیرکلاسها (مانند PyDateTime_DateTime). آرگومان نباید NULL باشد و نوع آن بررسی نمیشود:
-
int PyDateTime_GET_YEAR(PyDateTime_Date *o)¶
سال را به صورت یک عدد صحیح مثبت برمیگرداند.
-
int PyDateTime_GET_MONTH(PyDateTime_Date *o)¶
ماه را بهصورت یک عدد صحیح از ۱ تا ۱۲ برمیگرداند.
-
int PyDateTime_GET_DAY(PyDateTime_Date *o)¶
روز را بهصورت یک عدد صحیح از ۱ تا ۳۱ برمیگرداند.
ماکروهایی برای استخراج فیلدها از اشیاء datetime. آرگومان باید نمونهای از PyDateTime_DateTime باشد، شامل زیرکلاسها. آرگومان نباید NULL باشد و نوع آن بررسی نمیشود:
-
int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)¶
ساعت را بهصورت یک عدد صحیح از ۰ تا ۲۳ برمیگرداند.
-
int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)¶
دقیقه را بهصورت یک عدد صحیح از ۰ تا ۵۹ برمیگرداند.
-
int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)¶
ثانیه را بهصورت یک عدد صحیح از ۰ تا ۵۹ برمیگرداند.
-
int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)¶
میکروثانیه را به صورت یک عدد صحیح از ۰ تا ۹۹۹۹۹۹ برمیگرداند.
-
int PyDateTime_DATE_GET_FOLD(PyDateTime_DateTime *o)¶
مقدار تاخوردگی (fold) را بهصورت یک عدد صحیح از ۰ تا ۱ برمیگرداند.
اضافه شده در نسخهی 3.6.
-
PyObject *PyDateTime_DATE_GET_TZINFO(PyDateTime_DateTime *o)¶
بازگرداندن tzinfo (که ممکن است
Noneباشد).اضافه شده در نسخهی 3.10.
ماکروهایی برای استخراج فیلدها از اشیاء زمان. آرگومان باید نمونهای از PyDateTime_Time باشد، شامل زیرکلاسها. آرگومان نباید NULL باشد و نوع آن بررسی نمیشود:
-
int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)¶
ساعت را بهصورت یک عدد صحیح از ۰ تا ۲۳ برمیگرداند.
-
int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)¶
دقیقه را بهصورت یک عدد صحیح از ۰ تا ۵۹ برمیگرداند.
-
int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)¶
ثانیه را بهصورت یک عدد صحیح از ۰ تا ۵۹ برمیگرداند.
-
int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)¶
میکروثانیه را به صورت یک عدد صحیح از ۰ تا ۹۹۹۹۹۹ برمیگرداند.
-
int PyDateTime_TIME_GET_FOLD(PyDateTime_Time *o)¶
مقدار تاخوردگی (fold) را بهصورت یک عدد صحیح از ۰ تا ۱ برمیگرداند.
اضافه شده در نسخهی 3.6.
-
PyObject *PyDateTime_TIME_GET_TZINFO(PyDateTime_Time *o)¶
بازگرداندن tzinfo (که ممکن است
Noneباشد).اضافه شده در نسخهی 3.10.
ماکروهایی برای استخراج فیلدها از اشیاء دلتای زمانی. آرگومان باید نمونهای از PyDateTime_Delta باشد، از جمله زیرکلاسها. آرگومان نباید NULL باشد و نوع آن بررسی نمیشود:
-
int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)¶
تعداد روزها را به صورت یک عدد صحیح از -999999999 تا 999999999 برمیگرداند.
اضافه شده در نسخهی 3.3.
-
int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)¶
تعداد ثانیهها را بهصورت یک عدد صحیح از ۰ تا ۸۶۳۹۹ برمیگرداند.
اضافه شده در نسخهی 3.3.
-
int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)¶
تعداد میکروثانیهها را به صورت یک عدد صحیح از ۰ تا ۹۹۹۹۹۹ برمیگرداند.
اضافه شده در نسخهی 3.3.
ماکروهایی برای سهولت کار ماژولهایی که DB API را پیادهسازی میکنند:
-
PyObject *PyDateTime_FromTimestamp(PyObject *args)¶
- مقدار بازگشتی: مرجع جدید.
با گرفتن یک تاپل آرگومان مناسب برای ارسال به
datetime.datetime.fromtimestamp()، یک شیء جدیدdatetime.datetimeمیسازد و برمیگرداند.
-
PyObject *PyDate_FromTimestamp(PyObject *args)¶
- مقدار بازگشتی: مرجع جدید.
با گرفتن یک تاپل آرگومان مناسب برای پاس دادن به
datetime.date.fromtimestamp()، یک شیء جدیدdatetime.dateایجاد کرده و بازمیگرداند.
دادههای داخلی¶
نمادهای زیر توسط C API ارائهشدهاند، اما باید فقط داخلی در نظر گرفته شوند.
-
PyDateTime_CAPSULE_NAME¶
نام کپسول datetime که باید به
PyCapsule_Import()پاس داده شود.صرفاً برای استفادهی داخلی. بهجای آن از
PyDateTime_IMPORTاستفاده کنید.