نشان دهنده زمان مدنی (یا گاهی اوقات زمان فیزیکی) است.
این نوع میتواند زمان مدنی را به یکی از چند روش ممکن نشان دهد:
- وقتی utcOffset تنظیم شده باشد و timeZone تنظیم نشده باشد: یک زمان مدنی در یک روز تقویمی با یک انحراف خاص از UTC.
- وقتی timeZone تنظیم شده باشد و utcOffset تنظیم نشده باشد: یک زمان مدنی در یک روز تقویمی در یک منطقه زمانی خاص.
- وقتی نه timeZone و نه utcOffset تنظیم نشده باشند: یک زمان رسمی در یک روز تقویمی به وقت محلی.
این تاریخ مربوط به تقویم میلادی پرولپتیک است.
اگر سال، ماه یا روز 0 باشند، DateTime به ترتیب فاقد سال، ماه یا روز مشخص در نظر گرفته میشود.
این نوع همچنین میتواند برای نمایش زمان فیزیکی استفاده شود اگر همه فیلدهای تاریخ و زمان تنظیم شده باشند و هر یک از حالتهای time_offset یکی از آنها تنظیم شده باشد. به جای آن، استفاده از پیام Timestamp برای زمان فیزیکی در نظر بگیرید. اگر مورد استفاده شما همچنین میخواهد منطقه زمانی کاربر را ذخیره کند، این کار را میتوان در فیلد دیگری انجام داد.
این نوع، انعطافپذیرتر از آن چیزی است که برخی از برنامهها ممکن است بخواهند. حتماً محدودیتهای برنامه خود را مستندسازی و تأیید کنید.
| نمایش JSON |
|---|
{ "year": integer, "month": integer, "day": integer, "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer, // Union field |
| فیلدها | |
|---|---|
year | اختیاری. سال تاریخ. باید از ۱ تا ۹۹۹۹ باشد، یا در صورت مشخص کردن تاریخ و زمان بدون سال، ۰ باشد. |
month | اختیاری. ماه سال. باید از ۱ تا ۱۲ باشد، یا در صورت مشخص کردن تاریخ و زمان بدون ماه، ۰ باشد. |
day | اختیاری. روز ماه. باید از ۱ تا ۳۱ باشد و برای سال و ماه معتبر باشد، یا اگر تاریخ و زمان بدون روز مشخص میشود، ۰ باشد. |
hours | اختیاری. ساعات روز در قالب ۲۴ ساعته. باید از ۰ تا ۲۳ باشد، پیشفرض ۰ (نیمهشب). یک API ممکن است مقدار "۲۴:۰۰:۰۰" را برای سناریوهایی مانند زمان تعطیلی کسبوکار مجاز بداند. |
minutes | اختیاری. دقیقه یا ساعت یا روز. باید از ۰ تا ۵۹ باشد، پیشفرض ۰ است. |
seconds | اختیاری. ثانیه یا دقیقه. معمولاً باید از ۰ تا ۵۹ باشد، پیشفرض ۰ است. یک API در صورت امکان ثانیه کبیسه، میتواند مقدار ۶۰ را نیز مجاز بداند. |
nanos | اختیاری. کسری از ثانیه بر حسب نانوثانیه. باید از ۰ تا ۹۹۹,۹۹۹,۹۹۹ باشد، پیشفرض ۰ است. |
فیلد یونیون time_offset . اختیاری. یا انحراف UTC یا منطقه زمانی DateTime را مشخص میکند. با توجه به اینکه دادههای منطقه زمانی ممکن است در آینده تغییر کنند (برای مثال، یک کشور تاریخ شروع/پایان DST خود را تغییر میدهد و DateTimeهای آینده در محدوده تحت تأثیر قبلاً ذخیره شدهاند)، بین آنها با دقت انتخاب کنید. در صورت حذف، DateTime به عنوان زمان محلی در نظر گرفته میشود. time_offset فقط میتواند یکی از موارد زیر باشد: | |
utcOffset | انحراف UTC. باید ثانیههای کامل، بین ۱۸- ساعت و ۱۸+ ساعت باشد. برای مثال، انحراف UTC از ۴-:۰۰ به صورت {seconds: -14400} نمایش داده میشود. مدت زمانی بر حسب ثانیه با حداکثر نه رقم کسری که به ' |
timeZone | منطقه زمانی. |