إتقان المفاهيم الأساسية للتعامل مع التواريخ والأوقات في مشاريع Rust الخاصة بك.

يعد التعامل مع التاريخ والوقت جانبًا مهمًا في العديد من التطبيقات ، بدءًا من جدولة المهام وتحليل البيانات وحتى إجراء العمليات الحسابية وضمان تمثيل البيانات.

يحتوي Rust على العديد من المكتبات والوحدات النمطية للعمل مع التواريخ والأوقات. يوفر الصدأ مدمجًا وقت صندوق للعمليات المتعلقة بالوقت ، وتعمل مكتبة Chrono مع العديد من مكتبات Rust الأخرى لعمليات التاريخ والوقت.

الشروع في العمل مع التاريخ والوقت في الصدأ

Chrono هي مكتبة التاريخ والوقت للتعامل مع التواريخ والأوقات والمناطق الزمنية والمدد في Rust. يوفر Chrono ميزات متعددة وواجهة برمجة تطبيقات سهلة الاستخدام لأنواع التاريخ والوقت والمناطق الزمنية وإزاحة التاريخ والوقت والمدة والفاصل الزمني والتحليل والتنسيق والعمل مع التقويمات.

يلعب Chrono بشكل جيد مع المكتبات الأخرى في نظام Rust البيئي ويتكامل بسلاسة مع المعيار سمات I / O للمكتبة تسمح لك بقراءة وكتابة قيم تاريخ ووقت Chrono من وإلى مختلف تيارات.

بالإضافة إلى ذلك ، يدعم Chrono التسلسل وإلغاء التسلسل من خلال سيردي صندوق ، مما يسهل العمل مع أنواع Chrono في JSON و YAML وتنسيقات أخرى. تكامل Chrono مع Serde يجعلها مناسبة لعمليات التاريخ والوقت أثناء

instagram viewer
بناء تطبيقات الويب في Rust.

يمكنك استخدام Chrono لاسترداد مواقعك UTC (التوقيت العالمي المنسق) للعديد من العمليات مثل التحويلات.

أضف هذا التوجيه إلى التبعيات قسم الخاص بك Cargo.toml ملف لتثبيته واستخدامه كرونو قفص:

[التبعيات]
كرونو = "0.4.24"

بعد تثبيت ملف كرونو قفص ، يمكنك استخدامه كرونو في مشروع Rust الخاص بك عن طريق استيراد الصندوق على النحو التالي:

يستخدم كرونو:: مقدمة:: * ؛

Chrono هو أحد صناديق Rust التي ستحتاجها في ترسانة التطوير الخاصة بك نظرًا لأنه يوفر معظم الميزات لعمليات التاريخ والوقت.

المناطق الزمنية والتعامل مع الوقت في الصدأ مع كرونو

تضمن المناطق الزمنية أن الطوابع الزمنية والمعلومات المتعلقة بالوقت دقيقة ومتسقة عبر المواقع الجغرافية المختلفة. أثناء العمل مع البيانات المتعلقة بالوقت ، من الضروري مراعاة المناطق الزمنية لمنع الغموض وعدم الدقة. يمكن أن تؤدي العمليات مثل مقارنة الطوابع الزمنية أو حساب المدد أو جدولة الأحداث دون معالجة المنطقة الزمنية المناسبة إلى نتائج غير متوقعة.

يمكنك التحويل بين المناطق الزمنية باستخدام Chrono. فيما يلي مثال على تحويل ملف التاريخ والوقت من منطقة زمنية إلى أخرى:

يستخدم توقيت:: {DateTime، Utc، Local، TimeZone}؛

الجبهة الوطنيةconvert_timezone() {
يترك utc_time: DateTime = Utc:: now () ؛
يترك local_time: DateTime = utc_time.with_timezone (& محلي) ؛

println!("وقت UTC: {}"، utc_time) ؛
println!("الوقت المحلي: {}"، الوقت المحلي)؛
}

ال convert_timezone تسترد الدالة UTC الحالي بامتداد Utc:: الآن الطريقة ، يحول UTC إلى المنطقة الزمنية المحلية بامتداد with_timezone الطريقة التي تأخذ في الإشارة إلى محلي هيكل وإرجاع أ التاريخ والوقت كائن يمثل نفس النقطة الزمنية ولكن في المنطقة الزمنية المحلية.

عندما تتصل بـ convert_timezone وظيفة ، فإنه سيتم طباعة UTC والتوقيت المحلي إلى وحدة التحكم.

بالإضافة إلى ذلك ، يوفر Chrono طرقًا ووظائف ملائمة للتوقيت الصيفي (DST) وتعويضات المنطقة الزمنية. في نظامك ، يمكنك ذلك ضبط الساعة للتوقيت الصيفي من خلال تطبيق الإعدادات أو لوحة التحكم.

في ما يلي مثال يوضح إمكانات Chrono مع التوقيت الصيفي وتعويضات الوقت:

يستخدم توقيت:: {DateTime، Utc، FixedOffset}؛

الجبهة الوطنيةمقبض_dst() {
يترك utc_time: DateTime = Utc:: now () ؛
يترك ny_timezone = FixedOffset:: شرق (5 * 3600);
// التوقيت الصيفي الشرقي (EDT) UTC-4: 00

يترك ny_time: DateTime = utc_time.with_timezone (& ny_timezone) ؛

println!("وقت UTC: {}"، utc_time) ؛
println!("وقت نيويورك: {}"، توقيت مدينة نيويورك)؛
}

ال مقبض_dst تصل الوظيفة إلى الوقت الحالي باستخدام ملف الآن طريقة واسترداد الوقت في نيويورك أثناء حساب وقت الإزاحة بامتداد FixedOffset:: شرق طريقة.

من خلال استدعاء with_timezone ، فأنت تقوم بتحويل التوقيت العالمي المنسق (UTC) إلى المنطقة الزمنية لنيويورك. يتعامل Chrono مع تعديلات الوقت وفقًا لـ DST المناسب ويعيد ملف التاريخ والوقت هدف.

عند العمل باستخدام التوقيت الصيفي ، من المهم أن تتذكر أن انتقالات التوقيت الصيفي تحدث في تواريخ وأوقات محددة. كرونو التاريخ والوقت تم تجهيز الهيكل للتعامل مع هذه التحولات وضمان تمثيل دقيق للوقت في مناطق زمنية مختلفة.

المدة وحسابات الفاصل

المدة هي وقت مستقل عن أي نقطة زمنية محددة. قد تحتاج إلى حساب المدة بين حدثين ، أو قياس الوقت المنقضي ، أو إضافة أو طرح مبلغ معين من وقت محدد.

مكتبة Rust القياسية وقت يوفر الصندوق أدوات شاملة للتعامل بكفاءة مع المدد.

إليك كيفية قياس وقت تنفيذ دالة باستخدام وقت قفص:

يستخدم توقيت:: {DateTime، Utc}؛
يستخدم الأمراض المنقولة جنسيا:: الوقت:: لحظة ؛

الجبهة الوطنيةرئيسي() {
يترك البدء = فوري:: الآن () ؛

// إجراء بعض العمليات
// ...

يترك end = فوري:: الآن () ؛
يترك المدة = end.duration_since (البداية) ؛

println!("الوقت المنقضي: {:؟}"، مدة)؛
}

ال رئيسي تسترجع الدالة الوقت الحالي بامتداد فوري طريقة المدمج في وقت قفص. بعد العملية ، رئيسي تسترجع الدالة الوقت في تلك اللحظة وتقوم بتقييم الفرق مع المدة_منذ وظيفة قبل طباعة فارق التوقيت على وحدة التحكم.

التسلسل وإلغاء التسلسل: تحويل تاريخ ووقت JSON إلى هياكل صدأ باستخدام Chrono

يعد تسلسل قيم التاريخ والوقت وإلغاء تسلسلها من JSON باستخدام Chrono و Serde عملية مباشرة. أولاً ، أضف ملف سيردي و serde_json صناديق تبعيات مشروعك.

[التبعيات]
سيردي = {الإصدار = "1.0"، الميزات = ["استخلاص"] }
serde_json = "1.0"

بعد ذلك ، سيتعين عليك تحديد نوع الصدأ وتنفيذ # [اشتقاق (تسلسل ، إلغاء تسلسل)] سمات للنوع الذي ستحدد فيه نوع البيانات:

يستخدم توقيت:: {DateTime، Utc}؛

# [اشتقاق (تسلسل ، إلغاء تسلسل)]
هيكلمقابلة {
start_time: DateTime,
end_time: DateTime,
}

يمكنك إجراء تسلسل لملفات مقابلة هيكلة لـ JSON مع Serde جنبًا إلى جنب مع إمكانيات تنسيق Chrono.

إليك كيفية تحويل مثيل من مقابلة اكتب إلى JSON:

يستخدم serde_json:: to_string؛

الجبهة الوطنيةرئيسي() {
يترك الاجتماع = الاجتماع {
start_time: Utc:: now () ،
end_time: Utc:: now () ،
};

يترك json = to_string (& meeting) .unwrap () ؛
println!("{}"، json) ؛
}

ال رئيسي وظيفة تخلق أ مقابلة المثيل مع التوقيت العالمي المتفق عليه (UTC) الحالي للحقول قبل استخدام امتداد إلى سلسلة وظيفة لتحويل مثيل البنية إلى سلسلة JSON مطبوعة على وحدة التحكم.

يمكنك بسهولة إلغاء تسلسل بيانات JSON والتاريخ والوقت إلى نوع هيكلي باستخدام serde_json from_str دالة تأخذ سلسلة JSON وتعيد نسخة بنية.

يستخدم serde_json:: from_str؛

الجبهة الوطنيةرئيسي() {
يترك json = r # "{" start_time ":" 2023-05-28T12: 00: 00Z "،" end_time ":" 2023-05-28T14: 00: 00Z "}" #;

يترك الاجتماع: الاجتماع = from_str (json) .unwrap () ؛
println!("{:#?}"، مقابلة)؛
}

ال رئيسي تقوم الدالة بإلغاء تسلسل سلسلة JSON من ملف json متغير في مقابلة مثيل مقابلة الهيكل قبل طباعة النسخة الهيكلية على وحدة التحكم.

يمكنك بناء تطبيقات متطورة من الصدأ

إن قوة Chrono وسهولة الاستخدام والوظائف الشاملة تجعله أداة لا غنى عنها للتعامل مع التواريخ والأوقات والمدة والفترات الزمنية لتطبيقاتك. يمكنك ضمان حسابات دقيقة للوقت وجدولة فعالة وعمليات موثوقة متعلقة بالتاريخ من خلال الاستفادة من قدرات Chrono.

تتمثل إحدى حالات الاستخدام الرئيسية لـ Chrono في إنشاء تطبيقات الويب. يمكنك استخدام Chrono لسجلات وقت النشاط وتوقيت نشاط المستخدم وعمليات الويب الأخرى.