Advertisement
  1. Code
  2. JavaScript

استخدام لوكسون للتاريخ والوقت في جافا سكريبت

Scroll to top
Read Time: 8 min

Arabic (العربية/عربي) translation by osamagaradh (you can also view the original English article)

قد يكون العمل مع التاريخ والوقت مهمة مربكة للمطورين بدءًا من JavaScript. في هذا البرنامج التعليمي ، ستتعرف على مكتبة جافا سكريبت جديدة تسمى Luxon مما يجعله نسيمًا ان تعمل مع التاريخ والوقت في JavaScript.

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

الشروع في العمل

ستقوم بإنشاء مشروع Angular-الزاوي- وسوف ترى كيفية استخدام مكتبة Luxon لمعالجة التاريخ والوقت في Angular. فلنبدأ بإنشاء تطبيق الويب الزاوي.

1
ng new AngularLuxon

وبمجرد الانتهاء من إنشاء المشروع، انتقل إلى دليل المشروع وقم بإنشاء عنصر جديد يسمى لوكسديت.

1
ng g component luxdate

سيكون لديك LuxdateComponent   تم إنشاؤه وإضافته إلى الوحدة النمطية للتطبيق في الملف app.module.ts. قم بإزالة AppComponent الافتراضي من التطبيق عن طريق حذف ملفات المكون من مجلد src / التطبيق. إليك كيفية ظهور ملف app.module.ts:

1
import { BrowserModule } from '@angular/platform-browser';
2
import { NgModule } from '@angular/core';
3
4
import { LuxdateComponent } from './luxdate/luxdate.component';
5
6
7
@NgModule({
8
  declarations: [
9
    LuxdateComponent
10
  ],
11
  imports: [
12
    BrowserModule
13
  ],
14
  providers: [],
15
  bootstrap: [LuxdateComponent]
16
})
17
export class AppModule { }

قم بتعديل الملف src/index.html لإضافة LuxdateComponent.

1
<body>
2
  <app-luxdate></app-luxdate>
3
</body>

قم بحفظ التغييرات المذكورة أعلاه، وابدء تشغيل الملقم.

1
npm start

سوف يكون لديك التطبيق قيد التشغيل في http://localhost:4200/.

دعنا نقم باستيراد مكتبة لوكسون في التطبيق الخاص بك.

1
npm install --save luxon

 بمجرد تثبيت Luxon في تطبيق Angular ، قم باستيراده في مكون LuxdateComponent. أنت الآن جاهز لاستخدام مكتبة Luxon في مشروعك.

التوقيت المحلي & وقت UTC باستخدام لوكسون

دعونا ننظر في كيفية الحصول على التوقيت المحلي باستخدام مكتبة لوكسون. قم باستيراد التاريخ والوقت من المكتبة لوكسون.

1
import { DateTime } from 'luxon';

داخل LuxdateComponent ، حدد متغير يسمى localDatetime.

1
public localDatetime;

قم بتعيين قيمة المتغير localDatetime  كما هو موضح:

1
this.localDatetime = DateTime.local();

قم بتقديم المتغير localDatetime  في الملف luxdate.component.html.

1
<div class="container">
2
    <div>
3
  	<div class="local">
4
			<span>
5
				{{localDatetime}}
6
			</span>
7
		</div>	
8
	</div>
9
</div>

احفظ التغييرات وسيكون لديك الوقت المحلي معروض على صفحة الويب.

1
2017-12-31T15:55:12.761+05:30 

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

قم بتنسيق التاريخ والوقت للعرض باستخدام  السطر السفلي من التعليمة البرمجية.

1
this.localDatetime = DateTime.local().toLocaleString(DateTime.DATETIME_FULL);

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

1
December 31, 2017, 10:35 PM GMT+5:30 

 وبالمثل ، يعطي أسلوب .utc في كائن DateTime وقت UTC.

إضافة متغير جديد في LuxdateComponent  لتعيين وقت UTC.

1
public utcDatetime;

 قم بتعيين قيمة متغير utcDatetime باستخدام كائن Datetime لLuxon.

1
this.utcDatetime = DateTime.utc().toLocaleString(DateTime.DATETIME_FULL);

قم بتقديم متغير utcDatetime في الملف luxdate.component.html كما هو موضح:

1
<div class="container">
2
    <h2>Luxon Library</h2>
3
	<div class="time">
4
		<div class="local">
5
			<span class="label">
6
				Local time :
7
			</span>
8
			<span>
9
				{{localDatetime}}
10
			</span>
11
		</div>
12
		<div class="utc">
13
			<span class="label">
14
				UTC time :
15
			</span>
16
			<span>
17
				{{utcDatetime}}
18
			</span>
19
		</div>
20
	</div>
21
</div>

قم بإضافة نمط CSS التالي إلى الملف luxdate.component.css.

1
.container{
2
    text-align: center;
3
	width: 100%;
4
}
5
.time{
6
	display: inline-block;
7
}
8
.local{
9
	border: 1px solid #8c8282;
10
	text-align: left;
11
	background-color: burlywood;
12
	padding: 10px;
13
}
14
.utc{
15
	margin-top: 30px;
16
	border: 1px solid #8c8282;
17
	text-align: left;
18
	background-color: burlywood;
19
	padding: 10px;
20
}
21
.label{
22
	font-family: serif;
23
	font-size: 22px;
24
	font-style: initial;
25
}

احفظ التغييرات المذكورة أعلاه، وسوف تكون قادر على عرض التوقيت المحلي والتوقيت UTC  باستخدام مكتبة لوكسون.

Luxon Library - Local Time UTC TimeLuxon Library - Local Time UTC TimeLuxon Library - Local Time UTC Time

من أجل عرض التوقيت المحلي والتوقيت مع شمول الثواني، يمكنك استخدام DATETIME_FULL_WITH_SECONDS. هنا كيف ستبدو:

1
ngOnInit() {
2
    this.localDatetime = DateTime.local().toLocaleString(DateTime.DATETIME_FULL_WITH_SECONDS);
3
	this.utcDatetime = DateTime.utc().toLocaleString(DateTime.DATETIME_FULL_WITH_SECONDS);
4
}

احفظ التغييرات ، وسيكون لديك التوقيت المحلي ومعروض لديك توقيت UTC مع الثواني.

Luxon Library - Local UTC Time With SecondsLuxon Library - Local UTC Time With SecondsLuxon Library - Local UTC Time With Seconds

التاريخ العام ومعلومات الوقت باستخدام لوكسون

 توفر مكتبة Luxon فئة معلومات تساعد في الحصول على بعض المعلومات العامة المتعلقة بالتاريخ والوقت.

عند التعامل مع التاريخ والوقت ، من الشائع أن تحتاج إلى قائمة الأشهر في سنة. باستخدام فئة المعلومات ، يمكنك الحصول على قائمة الأشهر كمصفوفة.

قم باستيراد فئة المعلومات في ملف luxdate.component.ts.

1
import { DateTime, Info } from 'luxon';

 قم بتعريف متغير لقائمة الأشهر وقم بتهيئته.

1
public months;
2
3
constructor() {
4
	this.months = [];
5
}

قم بتعيين قائمة الشهور من الفئة المعلوماتية.

1
this.months = Info.months();

قم بإضافة HTML التالي إلى الملف luxdate.component.html لعرض محتوى متغير الشهور.

1
<div class="month">
2
	<span class="label">
3
		Month :
4
	</span>
5
	<span>
6
		<select>
7
			<option *ngFor="let month of months; let i = index">
8
				{{month}}
9
			</option>
10
		</select>
11
	</span>
12
</div>

احفظ التغييرات المذكورة أعلاه، وستكون لديك قائمة الشهور عامرة.

Luxon Library - MonthsLuxon Library - MonthsLuxon Library - Months

وبالمثل، استخدام الأسلوب أيام الأسبوع يعطيك قائمة بأيام الأسبوع.

1
this.weeks = Info.weekdays();

احفظ التغييرات، وسيكون لديك أيام الأسبوع مصفوفة على الشاشة.

كما يوفر لوكسون خياراً للحصول على قائمة meridiems باستخدام الأسلوب meridiems .

1
this.meridians = Info.meridiems();

قم بتعديل التعليمات البرمجية ل HTML في luxdate.component.html لعرض الأسابيع وmeridians-خطوط الطول- .

1
<div class="month">
2
	<span>
3
		<select>
4
			<option *ngFor="let month of months; let i = index">
5
				{{month}}
6
			</option>
7
		</select>
8
	</span>
9
	<span>
10
		<select>
11
			<option *ngFor="let week of weeks; let i = index">
12
				{{week}}
13
			</option>
14
		</select>
15
	</span>
16
	<span>
17
		<select>
18
			<option *ngFor="let meridian of meridians; let i = index">
19
				{{meridian}}
20
			</option>
21
		</select>
22
	</span>
23
</div>

احفظ التغييرات، وسوف تكون قادراً على عرض الأسابيع وعرض خطوط الطول.

Luxon Library - Weeks MeridiansLuxon Library - Weeks MeridiansLuxon Library - Weeks Meridians

التعامل مع التدويل باستخدام لوكسون

توفر Luxon فئة إعداد ، والتي يمكنك من خلالها التعامل مع سلوك Luxon بشكل عام. لنقم بتعيين الإعدادات المحلية الافتراضية لـ Luxon إلى el.

قم باستيراد فئة الاعدادات في الملف luxdate.component.ts.

1
import { DateTime, Settings, Info } from 'luxon';

في أسلوب المنشئ ل LuxdateComponent ، قم بتعيين اللغة الافتراضية كما هو موضح:

1
constructor() {
2
    Settings.defaultLocale = 'el';
3
}

احفظ التغييرات، وسوف يكون لديك المكان الافتراضي معين إلى el.

Luxon - Setting LocaleLuxon - Setting LocaleLuxon - Setting Locale

ضع نطاق للمعلومات باستخدام لوكسون

 توفر مكتبة Luxon واجهة للحصول على التفاصيل المتعلقة بمنطقة معينة لكائن DateTime. لاستخدامه ، تحتاج إلى استيراد Zone من مكتبة Luxon.

1
import { DateTime, Settings, Info, Zone } from 'luxon';

لنحاول استخدام Zone على كائن DateTime ل Luxon .قم بإنشاء كائن DateTime  محلي ل Luxon .

1
let dateObj = DateTime.local();    

يمكنك استخدام واجهة Zone على dateObj للحصول على اسم المنطقة. أضف التعليمات البرمجية التالية لتسجيل اسم المنطقة.

1
console.log('Zone name is ', dateObj.zone.name);

احفظ التغييرات، وفي تشغيل التطبيق، سوف تكون قادراً على عرض اسم المنطقة مسجلاً في وحدة تحكم المستعرض.

1
Zone name is  Asia/Kolkata

دعونا نحاول طباعة اسم منطقة كائن DateTime ل يو تي سي.

1
let utcObj = DateTime.utc();
2
console.log('Zone name is ', utcObj.zone.name);

 ستقوم التعليمة البرمجية المذكورة أعلاه بطباعة اسم المنطقة باسم UTC.

1
Zone name is  UTC

توفر واجهة منطقة Luxon طريقة لمقارنة منطقتين زمنيتين. لنحاول مقارنة المنطقة الزمنية لكائنات DateTime ,localObj و utcObj.

1
if(localObj.zone.equals(utcObj.zone)){
2
	console.log('Both zones are equal');
3
} else{
4
	console.log('Both zones are different');
5
}

كما هو موضح في الكود السابق ، استخدمت أسلوب zone.equals لمقارنة المناطق. احفظ التغييرات وحاول تشغيل التطبيق ، وستحصل على النتيجة مسجّلة.

1
Both zones are different

الفاصل الزمني في لوكسون

الفاصل الزمني في Luxon هو غلاف لنقطتي نهاية منDateTime والتي يمكن معالجتها باستخدام أساليب Luxon. من الوثائق الرسمية:

يمثل كائن الفاصل الزمني فاصل زمني نصف مفتوح ، حيث تكون كل نقطة نهاية هي DateTime. من الناحية المفاهيمية ، إنها حاوية لهاتين النقطتين النهائيتن ، مصحوبة بأساليب لإنشاء ، تحليل ، استجواب ، مقارنة ، تحويل ، وتنسيق لهم.

 هناك طريقتان مختلفتان لإنشاء فاصل زمني باستخدام Luxon. دعونا ننظر في كيفية إنشاء فاصل زمني باستخدام كائن بداية ونهاية من DateTime

 قم باستيراد الفاصل الزمني من لوكسون في LuxdateComponent

1
import { Interval } from 'luxon';

 قم بإنشاء كائن DateTime بداية وكائن نهاية  DateTime.

1
let startDate = DateTime.local();
2
let endDate = DateTime.local().plus({minutes : 15});

كما رأينا في التعليمات البرمجية أعلاه، قمت بإنشاء startDate باستخدام التوقيت المحلي الحالي و endDate بزيادة التوقيت المحلي ب 15 دقيقة.

قم إنشاء فاصل زمني باستخدام الأسلوب fromDateTimes .

1
let intv = Interval.fromDateTimes(startDate, endDate);
2
console.log('Interval is ',intv);

احفظ التغييرات المذكورة أعلاه، وفي تشغيل التطبيق، ستكون لديك الفترة مسجلة.

Luxon Library IntervalLuxon Library IntervalLuxon Library Interval

الآن يمكنك تطبيق أسلوب Luxon لمعالجة أو تنسيق وقت البدء والانتهاء في الكائن الفاصل. لنفترض أنك تريد التحقق من اسم المنطقة لوقت البدء في الفاصل الزمني. يمكنك القيام بذلك باستخدام خاصية zone.name كما هو موضح:

1
console.log('Start date zone is ',intv.s.zone.name);

سوف يكون لديك الاخراج التالي مسجل في وحدة تحكم المستعرض:

1
Start date zone is  Asia/Kolkata

إنشاء مدة باستخدام لوكسون

يوفر Luxon زوج من الأساليب لإنشاء مدة. للبدء في إنشاء المدة ، ستحتاج إلى استيراد المدة في LuxdateComponent خاصتك.

1
import { Duration } from 'luxon';

بمجرد استيرادها ، يمكنك استخدام الأسلوب fromMillis لإنشاء مدة بتحديد عدد الاجزاء من الثواني.

1
let fiveMinute = Duration.fromMillis(5 * 60 * 1000);
2
console.log('Five minutes is ', fiveMinute);

احفظ التغييرات، وفي تشغيل التطبيق، سيكون لديك مدة fiveMinute أعلاه مسجلة.

Duration Using MilliSecondsDuration Using MilliSecondsDuration Using MilliSeconds

 يمكنك أيضًا استخدام كائن DateTime آخر لإنشاء مدة باستخدام الأسلوب fromObject. إليك كيفية ظهور الشفرة:

1
let startDate = DateTime.local();
2
let dur = Duration.fromObject(startDate);
3
console.log('Duration from object is ', dur);

احفظ التغييرات، وسيكون لديك المدة مسجلة  في وحدة تحكم المستعرض.

Duration Using DateTime ObjectDuration Using DateTime ObjectDuration Using DateTime Object

في الختام

في هذا البرنامج التعليمي ، رأيت كيفية البدء باستخدام مكتبة Luxon للعمل مع التاريخ والوقت في مشروع ويب زاوي. تعلمت كيفية التعامل مع التوقيت المحلي ووقت UTC ، وكيفية إنشاء فاصل زمني ومدته باستخدام Luxon.

للحصول على معلومات متعمقة حول استخدام المكتبة لوكسون، أوصي بقراءة الوثائق الرسمية.

كيف كانت تجربتك بتعلم العمل مع لوكسون؟ اسمحوا لنا أن نعرف أفكاركم في التعليقات أدناه.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.