Notice: file_put_contents(): Write of 6176 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 16384 of 22560 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
Web Devs@fullStackDevs P.381
FULLSTACKDEVS Telegram 381
Forwarded from Mr (Mohammad SheykhVeysi)
#آشنایی_با_تاریخ_و_زمان
#قسمت_اول
تاریخ و زمان بخش مهمی از زندگیه روزمره و همچنین جزئی جدایی ناپذیر در پروژه های ماست
در این مقاله به بررسی تایپ های مختلف برای نگه داری تاریخ و زمان می پردازیم و پیرامون آنها طی قسمت های مختلف بحث خواهیم کرد.
DateTime
این نوع داده یک ساختار ValueType مانند int , double و .. است که در فضای نام System قابل دسترسی میباشد. این struct اینتر فیس های
IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
پیاده سازی کرده است .
یک شئ از نوع DateTime دارای متد هایی برای دستکاری زمان میباشد، متدهایی برای افزودن Day ,Hour,Minute و همچنین متدهایی یرای تبدیل یک رشته با فرمت تاریخ و زمان به یک شئ ار نوع DateTime و همچنین دارای مشخصه هایی برای دریافت روز ، ماه ، ساعت از آن شی است.
یکی از این مشخصه ها Kind میباشد و مشخص کننده نوع زمان برساس مقادیر خروجی زیر است
 Unspecified، Utc، Local time

DateTime Formatting
کاربران و همچنین برنامه نویسان به فرمت های مختلفی از زمان تاریخ و زمان نیاز دارند. برای مثال تاریخ در فرمت "mm/dd/yyyy" که به صورت 05/31/2019 نمایش داده خواهد شد.

Handling Nullable DateTime
همانطور که گفته شد DateTime یک ValueType است و به طور پیشفرض نمیتوان به آن مقدار(به اصطلاح) null را اختصاص داد . یکی از راه های اینکه یک ValueType مقدار null را بپذیرد باید elvis-operator را بعد از تعریف نوغ یک متغیر استفاده کرد

DateTime? nullDateTime = null; 
بدین ترتیب valueType شما نال پذیر خواهد شد .

Parse string to DateTime object
گاهی نیاز داریم تا یک رشته را که فرمت تاریخ و زمان دارن به یک شئ DateTime تبدیل کنیم تا عملیات مورد نظرمان را روی انجام دهیم برای انجام دادن این کار متد های متعددی در اختیارمان قرار دارد مثال :
Convert.ToDateTime()
DateTime.Parse()
DateTime.ParseExact()
DateTime.TryParse()
DateTime.TryParseExact()

سوالی که ممکن است در ذهن شما ایجاد شود این است که دلیل این تعداد متد برای تبدیل رشته به زمان چیست ؟
پاسخ واضح است . هر متد برای هدف خاصی است . در اینجا به بررسی برخی میپردازیم
DateTime.ParseExact()
این متد یه شما این اطمینان را میدهد که رشته خودرا به یک فرمت مشخص تبدیل کنید . اما اگر فرمت رشته ورودی با فرمت تعیین شده توسط شما متفاوت باشد سبب صادر شدن یک خطا در برنامه میشود پس اگر از فرمت رشته ورودی خود مطممئن هستید وقصد تبدیل آن به فرمت خود را دارید این متد انتخاب خوبی است.
DateTime.TryParseExact()
خروجی این متد یه مفدار بولین است و این اطمینان رو به شما میدهد که رشته ورودی قابل تبدیل به فرمت مشخص شده میباشد یا خیر. واگر قابل تبدیل نباشد خطاهای صادر شده را مدیریت میکند.پس از این جهت هیچ نگرانی برای شما وجود ندارد.
DateTimeOffset
این تایپ در Net framework 3.5 معرفی شد از این نوع تایپ زمانی باید استفاده کرد که اختلاف زمانی برحسب UTC برای ما مهم باشد و بخواهیم در هنگام ذخیره سازی تاریخ و زمان ، زمان به صورت محلی ذخیره نشود و به همراه آن اختلاف زمانی(Offset) نیز ذخیره شود.
فرمت ذخیره سازی تاریخ و زمان در این تایپ به این شکل است
Date + Time + Offset

درواقع تعبیر و نام گذاری این تایپ به این شکل( DateTimeWithOffset) باعث درک بهتر این مسئله میشود.
اکثر مشخصه های این تایپ با تایپ DateTime یکسان هستند اما مشخصه های جدیدی نیز به آن اضافه شده است

DateTimeOffset.DateTime
این مشخصه مقدار زمان را بدون تبدیل ان به زمان محلی برمی گرداند.
DateTimeOffset.LocalDateTime
این مشخصه مقدار زمان را براساس زمان محلی برمیگرداند.

DateTimeOffset.Offset
این مشخصه میزان Offset از UTC را برمیگرداند.

DateTimeOffset.UtcDateTime
این مشخصه زمان را براساس UTC برمیگرداند.

برای مثال اگر متغیری از نوع DateTimeOffset تعریف کنیم وزمان حال را به آن اختصاص دهیم نتیجه به این صورت خواهد بود
05/31/2019 03:11:56 PM +04:30

که 05/31/2019 03:11:56 PM تاریخ و زمان و +04:30
و اختلاف زمانی نسبت به UTC خواهد بود که اگر اختلاف زمانی را با تاریخ و زمان جمع کنیم UTC بدست خواهد آمد. این بهترین راه برای کار کردن با محدوده زمانی های مختلف است.

Storing DateTime (UTC) vs. storing DateTimeOffset
همیشه و همیشه زمان را به صورت UTC در دیتابیس ذخیره کنید و متناسب با منطقه زمانی کاربر نمایش دهید.
اما در بعضی سناریو های خاص مشکلاتی و چالش هایی وجود دارد به عنوان مثال اگه سناریویی مانند مثال زیر داشته باشید :



tgoop.com/fullStackDevs/381
Create:
Last Update:

#آشنایی_با_تاریخ_و_زمان
#قسمت_اول
تاریخ و زمان بخش مهمی از زندگیه روزمره و همچنین جزئی جدایی ناپذیر در پروژه های ماست
در این مقاله به بررسی تایپ های مختلف برای نگه داری تاریخ و زمان می پردازیم و پیرامون آنها طی قسمت های مختلف بحث خواهیم کرد.
DateTime
این نوع داده یک ساختار ValueType مانند int , double و .. است که در فضای نام System قابل دسترسی میباشد. این struct اینتر فیس های
IComparable, IComparable<DateTime>, IConvertible, IEquatable<DateTime>, IFormattable, System.Runtime.Serialization.ISerializable
پیاده سازی کرده است .
یک شئ از نوع DateTime دارای متد هایی برای دستکاری زمان میباشد، متدهایی برای افزودن Day ,Hour,Minute و همچنین متدهایی یرای تبدیل یک رشته با فرمت تاریخ و زمان به یک شئ ار نوع DateTime و همچنین دارای مشخصه هایی برای دریافت روز ، ماه ، ساعت از آن شی است.
یکی از این مشخصه ها Kind میباشد و مشخص کننده نوع زمان برساس مقادیر خروجی زیر است

 Unspecified، Utc، Local time

DateTime Formatting
کاربران و همچنین برنامه نویسان به فرمت های مختلفی از زمان تاریخ و زمان نیاز دارند. برای مثال تاریخ در فرمت "mm/dd/yyyy" که به صورت 05/31/2019 نمایش داده خواهد شد.

Handling Nullable DateTime
همانطور که گفته شد DateTime یک ValueType است و به طور پیشفرض نمیتوان به آن مقدار(به اصطلاح) null را اختصاص داد . یکی از راه های اینکه یک ValueType مقدار null را بپذیرد باید elvis-operator را بعد از تعریف نوغ یک متغیر استفاده کرد

DateTime? nullDateTime = null; 
بدین ترتیب valueType شما نال پذیر خواهد شد .

Parse string to DateTime object
گاهی نیاز داریم تا یک رشته را که فرمت تاریخ و زمان دارن به یک شئ DateTime تبدیل کنیم تا عملیات مورد نظرمان را روی انجام دهیم برای انجام دادن این کار متد های متعددی در اختیارمان قرار دارد مثال :
Convert.ToDateTime()
DateTime.Parse()
DateTime.ParseExact()
DateTime.TryParse()
DateTime.TryParseExact()

سوالی که ممکن است در ذهن شما ایجاد شود این است که دلیل این تعداد متد برای تبدیل رشته به زمان چیست ؟
پاسخ واضح است . هر متد برای هدف خاصی است . در اینجا به بررسی برخی میپردازیم
DateTime.ParseExact()
این متد یه شما این اطمینان را میدهد که رشته خودرا به یک فرمت مشخص تبدیل کنید . اما اگر فرمت رشته ورودی با فرمت تعیین شده توسط شما متفاوت باشد سبب صادر شدن یک خطا در برنامه میشود پس اگر از فرمت رشته ورودی خود مطممئن هستید وقصد تبدیل آن به فرمت خود را دارید این متد انتخاب خوبی است.
DateTime.TryParseExact()
خروجی این متد یه مفدار بولین است و این اطمینان رو به شما میدهد که رشته ورودی قابل تبدیل به فرمت مشخص شده میباشد یا خیر. واگر قابل تبدیل نباشد خطاهای صادر شده را مدیریت میکند.پس از این جهت هیچ نگرانی برای شما وجود ندارد.
DateTimeOffset
این تایپ در Net framework 3.5 معرفی شد از این نوع تایپ زمانی باید استفاده کرد که اختلاف زمانی برحسب UTC برای ما مهم باشد و بخواهیم در هنگام ذخیره سازی تاریخ و زمان ، زمان به صورت محلی ذخیره نشود و به همراه آن اختلاف زمانی(Offset) نیز ذخیره شود.
فرمت ذخیره سازی تاریخ و زمان در این تایپ به این شکل است
Date + Time + Offset

درواقع تعبیر و نام گذاری این تایپ به این شکل( DateTimeWithOffset) باعث درک بهتر این مسئله میشود.
اکثر مشخصه های این تایپ با تایپ DateTime یکسان هستند اما مشخصه های جدیدی نیز به آن اضافه شده است

DateTimeOffset.DateTime
این مشخصه مقدار زمان را بدون تبدیل ان به زمان محلی برمی گرداند.
DateTimeOffset.LocalDateTime
این مشخصه مقدار زمان را براساس زمان محلی برمیگرداند.

DateTimeOffset.Offset
این مشخصه میزان Offset از UTC را برمیگرداند.

DateTimeOffset.UtcDateTime
این مشخصه زمان را براساس UTC برمیگرداند.

برای مثال اگر متغیری از نوع DateTimeOffset تعریف کنیم وزمان حال را به آن اختصاص دهیم نتیجه به این صورت خواهد بود
05/31/2019 03:11:56 PM +04:30

که 05/31/2019 03:11:56 PM تاریخ و زمان و +04:30
و اختلاف زمانی نسبت به UTC خواهد بود که اگر اختلاف زمانی را با تاریخ و زمان جمع کنیم UTC بدست خواهد آمد. این بهترین راه برای کار کردن با محدوده زمانی های مختلف است.

Storing DateTime (UTC) vs. storing DateTimeOffset
همیشه و همیشه زمان را به صورت UTC در دیتابیس ذخیره کنید و متناسب با منطقه زمانی کاربر نمایش دهید.
اما در بعضی سناریو های خاص مشکلاتی و چالش هایی وجود دارد به عنوان مثال اگه سناریویی مانند مثال زیر داشته باشید :

BY Web Devs


Share with your friend now:
tgoop.com/fullStackDevs/381

View MORE
Open in Telegram


Telegram News

Date: |

ZDNET RECOMMENDS With Bitcoin down 30% in the past week, some crypto traders have taken to Telegram to “voice” their feelings. Today, we will address Telegram channels and how to use them for maximum benefit. Click “Save” ; Telegram Channels requirements & features
from us


Telegram Web Devs
FROM American