ஜாவாஸ்கிரிப்ட் டெம்போரல் ஏபிஐ-ஐ ஆராயுங்கள். இது உங்கள் உலகளாவிய பயன்பாடுகளில் தேதி மற்றும் நேரத்தை எளிமையாகவும் துல்லியமாகவும் நிர்வகிக்க உதவும் ஒரு புரட்சிகரமான தீர்வாகும்.
ஜாவாஸ்கிரிப்ட் டெம்போரல் ஏபிஐ: நவீன தேதி நேரக் கையாளுதல்
ஜாவாஸ்கிரிப்ட்டில் தேதி மற்றும் நேரத்தைக் கையாள்வது டெவலப்பர்களுக்கு வரலாற்று ரீதியாக ஒரு விரக்தியான விஷயமாக இருந்து வருகிறது. உள்ளமைக்கப்பட்ட `Date` ஆப்ஜெக்ட் செயல்பட்டாலும், அது பல சவால்களை முன்வைக்கிறது. இது மாறக்கூடியது, வலுவான நேர மண்டல ஆதரவைக் கொண்டிருக்கவில்லை, மற்றும் குழப்பமான ஏபிஐ-யைக் கொண்டுள்ளது. அதிர்ஷ்டவசமாக, தற்போது நிலை 3 முன்மொழிவில் உள்ள ECMAScript டெம்போரல் ஏபிஐ, ஜாவாஸ்கிரிப்ட்டில் நாம் தேதிகள் மற்றும் நேரங்களுடன் வேலை செய்யும் முறையை புரட்சிகரமாக்க நோக்கமாகக் கொண்டுள்ளது. இந்தக் விரிவான வழிகாட்டி, டெம்போரல் ஏபிஐ-யை ஆழமாக ஆராய்ந்து, உலகளாவிய பயன்பாடுகளை உருவாக்கும் டெவலப்பர்களுக்கு அதன் நன்மைகள் மற்றும் நடைமுறை பயன்பாடுகள் பற்றிய தெளிவான புரிதலை வழங்குகிறது.
தற்போதுள்ள Date ஆப்ஜெக்ட்டில் உள்ள சிக்கல்
டெம்போரல் ஏபிஐ-யை ஆராய்வதற்கு முன், தற்போதுள்ள `Date` ஆப்ஜெக்ட்டின் வரம்புகளைப் புரிந்துகொள்வது முக்கியம். `Date` ஆப்ஜெக்ட் என்பது ஒரு ஜாவாஸ்கிரிப்ட் பிரிமிடிவ் ஆகும், இது ஒரு குறிப்பிட்ட நேரத்தைக் குறிக்கிறது. இருப்பினும், இது பல குறைபாடுகளைக் கொண்டுள்ளது:
- மாறக்கூடிய தன்மை: `Date` ஆப்ஜெக்ட் மாறக்கூடியது, அதாவது அதன் பண்புகளை நேரடியாக மாற்ற முடியும். இது எதிர்பாராத பக்க விளைவுகளுக்கும் பிழைகளுக்கும் வழிவகுக்கும், குறிப்பாக பெரிய பயன்பாடுகளில்.
- மாறாத தன்மையின்மை: மாறாத `Date` ஆப்ஜெக்ட்களை உருவாக்குவது அல்லது தேதி மதிப்புகளைக் கையாளும்போது புதிய `Date` ஆப்ஜெக்ட்களை உருவாக்குவது அதிக கைமுறை முயற்சி தேவைப்படுகிறது.
- குழப்பமான ஏபிஐ: `Date` ஆப்ஜெக்ட்டின் ஏபிஐ குழப்பமானதாகவும் பிழை ஏற்படக்கூடியதாகவும் இருக்கலாம். எடுத்துக்காட்டாக, மாத மதிப்புகள் பூஜ்ஜியத்தில் இருந்து குறியிடப்படுகின்றன (ஜனவரிக்கு 0, டிசம்பருக்கு 11), இது அடிக்கடி ஒன்று-கூடுதலான பிழைகளுக்கு வழிவகுக்கிறது.
- மோசமான நேர மண்டலக் கையாளுதல்: நேர மண்டலங்களுடன் வேலை செய்வது சிக்கலானது மற்றும் பெரும்பாலும் வெளிப்புற லைப்ரரிகள் தேவைப்படுகின்றன. `Date` ஆப்ஜெக்ட் ஹோஸ்ட் அமைப்பின் நேர மண்டலத்தை சார்ந்துள்ளது, இது வெவ்வேறு சாதனங்கள் மற்றும் சூழல்களில் சீரற்ற நடத்தைக்கு வழிவகுக்கும். உலகளவில் வெவ்வேறு நேர மண்டலங்களில் உள்ள பயனர்களை ஆதரிக்கும்போது இது குறிப்பாக சவாலானது.
- ஸ்ட்ரிங் மாற்றும் சிக்கல்கள்: `Date` ஆப்ஜெக்ட்களை ஸ்ட்ரிங்குகளாக மாற்றுவதும் சிக்கலானது, இது பெரும்பாலும் சீரற்ற வடிவமைப்பு மற்றும் நேர மண்டல பிரதிநிதித்துவத்தில் விளைகிறது. இது தரவுப் பரிமாற்றத்தைப் பாதிக்கலாம்.
இந்த வரம்புகள் பல ஆண்டுகளாக ஜாவாஸ்கிரிப்ட் டெவலப்பர்களுக்கு தேதி மற்றும் நேரக் கையாளுதலை ஒரு தொடர்ச்சியான வலிமிகுந்த புள்ளியாக ஆக்கியுள்ளன.
டெம்போரல் ஏபிஐ-யின் அறிமுகம்
இந்தக் குறைபாடுகளை நிவர்த்தி செய்வதற்காக டெம்போரல் ஏபிஐ வடிவமைக்கப்பட்டுள்ளது. இது ஜாவாஸ்கிரிப்ட்டில் தேதிகள் மற்றும் நேரங்களுடன் வேலை செய்வதற்கான ஒரு புதிய, நவீன மற்றும் உள்ளுணர்வுடன் கூடிய ஏபிஐ ஆகும். டெம்போரல் ஏபிஐ-யின் முக்கிய அம்சங்கள் பின்வருமாறு:
- மாறாத தன்மை: டெம்போரல் ஆப்ஜெக்ட்கள் மாறாதவை. ஒரு டெம்போரல் ஆப்ஜெக்ட்டில் செய்யப்படும் செயல்பாடுகள் எப்போதும் ஒரு புதிய ஆப்ஜெக்ட்டைத் திருப்பித் தரும், அசல் ஆப்ஜெக்ட்டை மாற்றாமல் விட்டுவிடும். இது பாதுகாப்பான மற்றும் கணிக்கக்கூடிய குறியீட்டை ஊக்குவிக்கிறது.
- தெளிவான மற்றும் சீரான ஏபிஐ: இந்த ஏபிஐ தெளிவு மற்றும் நிலைத்தன்மைக்கு முக்கியத்துவம் கொடுத்து, மிகவும் உள்ளுணர்வுடன் மற்றும் பயன்படுத்த எளிதாக வடிவமைக்கப்பட்டுள்ளது. மாத மதிப்புகள், எடுத்துக்காட்டாக, ஒன்று-குறியிடப்பட்டவை, இது பொதுவான எதிர்பார்ப்புகளுடன் பொருந்துகிறது.
- வலுவான நேர மண்டல ஆதரவு: டெம்போரல் நேர மண்டலங்களுக்கு உள்ளமைக்கப்பட்ட ஆதரவை வழங்குகிறது மற்றும் நேர மண்டல மாற்றங்களை துல்லியமாகக் கையாளுகிறது.
- வகை பாதுகாப்பு: இந்த ஏபிஐ பல்வேறு தேதி மற்றும் நேர வகைகளை அறிமுகப்படுத்துகிறது (எ.கா., `Temporal.PlainDate`, `Temporal.ZonedDateTime`), இது சிறந்த வகை பாதுகாப்பை வழங்குகிறது மற்றும் உங்கள் குறியீட்டைப் பற்றி சிந்திப்பதை எளிதாக்குகிறது.
- பன்னாட்டுமயமாக்கல்: பன்னாட்டுமயமாக்கலை மனதில் கொண்டு வடிவமைக்கப்பட்ட டெம்போரல் ஏபிஐ, வெவ்வேறு காலண்டர் அமைப்புகள் மற்றும் வடிவங்களுக்கான ஆதரவை வழங்குகிறது.
டெம்போரல் ஏபிஐ என்பது `Date` ஆப்ஜெக்ட்டுக்கு ஒரு நேரடி மாற்று அல்ல. இது ஒரு முற்றிலும் புதிய ஏபிஐ ஆகும். இதற்கு வழங்கப்படும் புதிய வகுப்புகள் மற்றும் முறைகளுக்கு ஏற்ப மாற்றியமைக்க வேண்டும். இருப்பினும், மேம்படுத்தப்பட்ட துல்லியம், எளிதான பராமரிப்பு மற்றும் சீரான நடத்தை ஆகியவற்றின் அடிப்படையில் நன்மைகள் குறிப்பிடத்தக்கவை.
முக்கிய டெம்போரல் வகைகள் மற்றும் கருத்துகள்
டெம்போரல் ஏபிஐ தேதிகள் மற்றும் நேரங்களின் வெவ்வேறு அம்சங்களைக் குறிக்க பல புதிய வகைகளை அறிமுகப்படுத்துகிறது. இந்த வகைகளைப் புரிந்துகொள்வது ஏபிஐ-யை திறம்படப் பயன்படுத்த முக்கியமானது.
1. `Temporal.Instant`
எந்த நேர மண்டலம் அல்லது காலண்டரிலிருந்தும் சுயாதீனமாக, ஒரு குறிப்பிட்ட நேரத்தைக் குறிக்கிறது. இது அடிப்படையில் யூனிக்ஸ் எப்போக்கிலிருந்து (ஜனவரி 1, 1970, 00:00:00 UTC) நானோ விநாடிகளின் எண்ணிக்கையாகும்.
const now = Temporal.Instant.now()
console.log(now.toString()); // e.g., 2024-02-29T15:30:00.123456789Z
இது உயர் துல்லியமான நேர அளவீடுகள் அல்லது வெவ்வேறு நேர மண்டலங்களில் சீராக விளக்கப்பட வேண்டிய நிகழ்வுகளைப் பதிவு செய்வதற்குப் பயனுள்ளதாக இருக்கும்.
2. `Temporal.ZonedDateTime`
ஒரு நேர மண்டலம் மற்றும் காலண்டர் தகவலுடன் ஒரு குறிப்பிட்ட நேரத்தைக் குறிக்கிறது. முழு நேர மண்டல விழிப்புணர்வுடன் தேதிகள் மற்றும் நேரங்களைக் கையாள்வதற்கு இந்த வகை அவசியம்.
const nowInUTC = Temporal.Now.zonedDateTime('UTC');
console.log(nowInUTC.toString()); // e.g., 2024-02-29T15:30:00.123456789Z[UTC]
const nowInNewYork = Temporal.Now.zonedDateTime('America/New_York');
console.log(nowInNewYork.toString()); // e.g., 2024-02-29T10:30:00.123456789-05:00[America/New_York]
`Temporal.Now` வகுப்பு வெவ்வேறு நேர மண்டலங்களில் தற்போதைய தேதி மற்றும் நேரத்தைப் பெற வசதியான முறைகளை வழங்குகிறது. நேர மண்டலங்கள், திட்டமிடல் அல்லது பயனர் இருப்பிடத்துடன் தொடர்புடைய எந்தவொரு பயன்பாட்டிற்கும் இந்த வகை விலைமதிப்பற்றது.
3. `Temporal.PlainDate`
நேரம் அல்லது நேர மண்டலம் இல்லாமல் ஒரு தேதியைக் குறிக்கிறது. இது காலண்டர் தேதிகளை மட்டும் குறிக்கப் பயனுள்ளதாக இருக்கும்.
const today = Temporal.Now.plainDateISO()
console.log(today.toString()); // e.g., 2024-02-29
இது `Date` ஆப்ஜெக்ட்டைப் போன்றது, ஆனால் மிகவும் கணிக்கக்கூடியது. இது பிறந்தநாள், ஆண்டுவிழாக்கள் மற்றும் நேரத்தைச் சார்ந்து இல்லாத பிற நிகழ்வுகளுக்கு ஏற்றது.
4. `Temporal.PlainTime`
தேதி அல்லது நேர மண்டலம் இல்லாமல் ஒரு நாளின் நேரத்தைக் குறிக்கிறது. ஒரு நிகழ்வின் நேரப் பகுதியைக் குறிப்பதற்கு ஏற்றது.
const nowTime = Temporal.Now.plainTimeISO()
console.log(nowTime.toString()); // e.g., 15:30:00.123456789
ஒரு வணிகத்தின் திறக்கும் நேரம் போன்றவற்றை வரையறுக்கப் பயனுள்ளதாக இருக்கும்.
5. `Temporal.PlainDateTime`
நேர மண்டலத் தகவல் இல்லாமல் ஒரு தேதி மற்றும் நேரத்தைக் குறிக்கிறது. இது நேர மண்டலத் தகவல் இல்லாத `Date` ஆப்ஜெக்ட்டைப் போன்றது.
const nowDateTime = Temporal.Now.plainDateTimeISO()
console.log(nowDateTime.toString()); // e.g., 2024-02-29T15:30:00.123456789
நேர மண்டலம் இல்லாமல் தேதி மற்றும் நேரம் இரண்டையும் குறிக்க வேண்டியிருக்கும் போது இது பொருத்தமானது.
6. `Temporal.PlainMonthDay`
ஆண்டு இல்லாமல் ஒரு மாதம் மற்றும் நாளைக் குறிக்கிறது.
const february29th = Temporal.PlainMonthDay.from({ month: 2, day: 29 });
console.log(february29th.toString()); // --02-29
பிறந்தநாள் அல்லது விடுமுறை போன்ற ஒரு ஆண்டின் ஒரு குறிப்பிட்ட நாளைக் குறிக்கப் பயனுள்ளதாக இருக்கும்.
7. `Temporal.PlainYearMonth`
நாள் இல்லாமல் ஒரு ஆண்டு மற்றும் மாதத்தைக் குறிக்கிறது.
const yearMonth = Temporal.PlainYearMonth.from({ year: 2024, month: 2 });
console.log(yearMonth.toString()); // 2024-02
நிதி அறிக்கை காலங்கள் அல்லது ஒரு அட்டவணையில் உள்ள மாதங்களைக் குறிக்க உதவியாக இருக்கும்.
8. `Temporal.Duration`
3 நாட்கள், 2 மணிநேரம், மற்றும் 30 நிமிடங்கள் போன்ற ஒரு கால அளவைக் குறிக்கிறது. இது ஒரு குறிப்பிட்ட நேரத்தைக் கொண்டிருக்கவில்லை.
const duration = Temporal.Duration.from({ days: 3, hours: 2, minutes: 30 });
console.log(duration.toString()); // P3DT02H30M
நிகழ்வுகளுக்கு இடையிலான நேரத்தைக் கணக்கிட நல்லது. விமானப் பயணத்தின் நீளம் அல்லது ஒரு சந்திப்பின் நேரம் போன்ற நிகழ்வின் கால அளவைக் கையாளும் அம்சங்களுக்கு இது அவசியம்.
9. `Temporal.TimeZone`
ஒரு நேர மண்டலத்தைக் குறிக்கிறது. தேதிகள் மற்றும் நேரங்களை நேர மண்டலங்களுக்கு இடையில் மாற்ற இதைப் பயன்படுத்தவும்.
const timeZone = Temporal.TimeZone.from('America/Los_Angeles');
console.log(timeZone.id); // America/Los_Angeles
இது நேர மண்டலங்களைக் கையாள்வதற்கான அடிப்படைக் கட்டுமானத் தொகுதி, உலகளாவிய பயன்பாடுகளில் இது முக்கியமானது.
10. `Temporal.Calendar`
ஒரு காலண்டர் அமைப்பைக் குறிக்கிறது (எ.கா., கிரிகோரியன், ஐஎஸ்ஓ, ஜப்பானிய). இது வெவ்வேறு காலண்டர் அமைப்புகளில் தேதிகளைக் கையாள உங்களை அனுமதிக்கிறது.
const isoCalendar = Temporal.Calendar.from('iso8601');
console.log(isoCalendar.toString()); // ISO8601
பல்வேறு கலாச்சாரங்கள் மற்றும் பிராந்தியங்களைச் சேர்ந்த பயனர்களை ஆதரிக்க வேண்டிய பயன்பாடுகளுக்கு இது அவசியம்.
நேர மண்டலங்களுடன் வேலை செய்தல்
நேர மண்டலக் கையாளுதல் டெம்போரல் ஏபிஐ-யின் முக்கிய பலங்களில் ஒன்றாகும். இது உள்ளமைக்கப்பட்ட `Date` ஆப்ஜெக்ட்டுடன் ஒப்பிடும்போது நேர மண்டலங்களுடன் வேலை செய்ய மிகவும் நம்பகமான மற்றும் பயனர் நட்பு வழியை வழங்குகிறது.
`ZonedDateTime` ஆப்ஜெக்ட்களை உருவாக்குதல்
நீங்கள் பல்வேறு மூலங்களிலிருந்து `ZonedDateTime` ஆப்ஜெக்ட்களை உருவாக்கலாம், அவற்றுள்:
- ஒரு குறிப்பிட்ட நேர மண்டலத்தில் தற்போதைய நேரம்: `Temporal.Now.zonedDateTime('America/Los_Angeles')`
- தற்போதுள்ள `Instant` மற்றும் ஒரு `TimeZone`: `Temporal.Instant.from('2024-02-29T15:30:00Z').toZonedDateTime(Temporal.TimeZone.from('America/New_York'))`
const instant = Temporal.Instant.from('2024-02-29T15:30:00Z');
const timeZone = Temporal.TimeZone.from('America/Los_Angeles');
const zonedDateTime = instant.toZonedDateTime(timeZone);
console.log(zonedDateTime.toString()); // e.g., 2024-02-29T07:30:00-08:00[America/Los_Angeles]
நேர மண்டலங்களை மாற்றுதல்
`toZonedDateTime` முறை ஒரு `ZonedDateTime` ஆப்ஜெக்ட்டை மற்றொரு நேர மண்டலத்திற்கு மாற்ற உங்களை அனுமதிக்கிறது.
const newYorkTime = Temporal.Now.zonedDateTime('America/New_York');
const londonTime = newYorkTime.toZonedDateTime(Temporal.TimeZone.from('Europe/London'));
console.log(londonTime.toString()); // e.g., 2024-02-29T12:30:00+00:00[Europe/London]
வெவ்வேறு நேர மண்டலங்களில் திட்டமிடப்பட்ட நிகழ்வுகள் அல்லது சந்திப்புகளைக் கையாளும்போது இது குறிப்பாகப் பயனுள்ளதாக இருக்கும்.
நேர மண்டல மாற்றங்களைக் கையாளுதல்
டெம்போரல் ஏபிஐ தானாகவே பகல் சேமிப்பு நேர (DST) மாற்றங்களைக் கையாளுகிறது. இது நேர மண்டலங்களுக்கு இடையில் நேர மாற்றங்களைச் செய்யும்போது துல்லியத்தை உறுதி செய்கிறது.
const berlinTime = Temporal.Now.zonedDateTime('Europe/Berlin');
console.log(berlinTime.toString());
// Assuming DST changes at 02:00:00 on the given date in Europe/Berlin:
const nextDay = berlinTime.add(Temporal.Duration.from({ days: 1 }));
console.log(nextDay.toString()); // Example: Time might 'jump' or 'skip' an hour depending on DST.
தேதி மற்றும் நேர எண்கணிதம்
பல பயன்பாடுகளில் தேதிகள் மற்றும் நேரங்களுடன் கணக்கீடுகளைச் செய்வது ஒரு முக்கியத் தேவையாகும். டெம்போரல் ஏபிஐ தேதி மற்றும் நேர மதிப்புகளை சுத்தமான மற்றும் திறமையான முறையில் கூட்ட, கழிக்க மற்றும் ஒப்பிடுவதற்கான முறைகளை வழங்குகிறது.
கால அளவுகளைக் கூட்டுதல் மற்றும் கழித்தல்
நீங்கள் `add()` மற்றும் `subtract()` முறைகளைப் பயன்படுத்தி பல்வேறு டெம்போரல் வகைகளுக்கு `Duration` ஆப்ஜெக்ட்களைக் கூட்டலாம் அல்லது கழிக்கலாம்.
const plainDate = Temporal.PlainDate.from('2024-02-29');
const duration = Temporal.Duration.from({ days: 10 });
const futureDate = plainDate.add(duration);
console.log(futureDate.toString()); // 2024-03-10
const dateTime = Temporal.PlainDateTime.from('2024-02-29T10:00:00');
const durationHours = Temporal.Duration.from({ hours: 3 });
const futureDateTime = dateTime.add(durationHours);
console.log(futureDateTime.toString()); // 2024-02-29T13:00:00
இது இறுதித் தேதிகள், சந்திப்பு நேரங்கள் மற்றும் பிற நேர உணர்திறன் நிகழ்வுகளைக் கணக்கிடுவதற்கு மிகவும் பயனுள்ளதாக இருக்கும்.
தேதிகள்/நேரங்களுக்கு இடையிலான வேறுபாட்டைக் கணக்கிடுதல்
`until()` முறை இரண்டு டெம்போரல் ஆப்ஜெக்ட்களுக்கு இடையிலான கால அளவைக் கணக்கிட அனுமதிக்கிறது. நீங்கள் அளவிட விரும்பும் நேர அலகுகளைக் குறிப்பிடலாம் (எ.கா., நாட்கள், மணிநேரம், நிமிடங்கள்).
const startDate = Temporal.PlainDate.from('2024-02-01');
const endDate = Temporal.PlainDate.from('2024-02-29');
const duration = startDate.until(endDate);
console.log(duration.toString()); // P28D
இது காலக்கெடு உள்ள திட்டங்களில் வேலை செய்யும் போது பயனுள்ளதாக இருக்கும். அல்லது ஒரு நபரின் வயதைக் கணக்கிட.
தேதிகள் மற்றும் நேரங்களை ஒப்பிடுதல்
டெம்போரல் ஆப்ஜெக்ட்களை ஒப்பிடுவதற்கு `equals()` மற்றும் `compare()` போன்ற வசதியான ஒப்பீட்டு முறைகளை டெம்போரல் வழங்குகிறது.
const date1 = Temporal.PlainDate.from('2024-02-29');
const date2 = Temporal.PlainDate.from('2024-02-29');
console.log(date1.equals(date2)); // true
const comparisonResult = date1.compare(Temporal.PlainDate.from('2024-03-01'));
console.log(comparisonResult); // -1 (date1 is earlier than the other date)
தேதிகள் மற்றும் நேரங்களை வடிவமைத்தல்
காட்சிப்படுத்துதலுக்காக தேதிகள் மற்றும் நேரங்களை வடிவமைப்பது ஒரு பயனர் நட்பு அனுபவத்தை வழங்குவதற்கு அவசியம். டெம்போரல் ஏபிஐ உள்ளமைக்கப்பட்ட வடிவமைப்பு விருப்பங்களை வழங்குகிறது.
`toLocaleString()` பயன்படுத்துதல்
`toLocaleString()` முறை, மொழி சார்ந்த அமைப்புகளின் அடிப்படையில் டெம்போரல் ஆப்ஜெக்ட்களை வடிவமைக்க உங்களை அனுமதிக்கிறது. இது உலகெங்கிலும் உள்ள வெவ்வேறு தேதி மற்றும் நேர வடிவங்களுக்கு ஏற்ப, பன்னாட்டுமயமாக்கலுக்கு முக்கியமானது.
const now = Temporal.Now.zonedDateTime('America/New_York');
console.log(now.toLocaleString('en-US')); // e.g., 2/29/2024, 10:30:00 AM
console.log(now.toLocaleString('fr-FR')); // e.g., 29/02/2024 10:30:00
மொழி சரம் ('en-US', 'fr-FR', போன்றவை) வடிவமைப்பிற்கான மொழி மற்றும் பிராந்தியத்தைக் குறிப்பிடுகிறது. இது வெவ்வேறு நாடுகளைச் சேர்ந்த பயனர்களுக்குப் பழக்கமான வழியில் தேதிகள் மற்றும் நேரங்களைக் காட்ட உதவுகிறது.
`toString()` மற்றும் டெம்ப்ளேட் லிட்டரல்களுடன் தனிப்பயன் வடிவமைப்பு
`toLocaleString()` மொழி சார்ந்த வடிவமைப்பை வழங்கினாலும், நீங்கள் `toString()`-ஐ ஸ்ட்ரிங் கையாளுதலுடன் பயன்படுத்தி தனிப்பயன் தேதி மற்றும் நேர வடிவங்களை உருவாக்கலாம்.
const now = Temporal.Now.plainDateTimeISO()
const formattedDate = `${now.year}-${String(now.month).padStart(2, '0')}-${String(now.day).padStart(2, '0')}`;
console.log(formattedDate); // e.g., 2024-02-29
இந்த முறை வடிவமைப்பு வெளியீட்டின் மீது முழுமையான கட்டுப்பாட்டை அனுமதிக்கிறது, ஆனால் நீங்கள் வடிவமைப்பு தர்க்கத்தை நீங்களே நிர்வகிக்க வேண்டும்.
நடைமுறை எடுத்துக்காட்டுகள் மற்றும் பயன்பாட்டு வழக்குகள்
டெம்போரல் ஏபிஐ பல்வேறு நிஜ உலகச் சூழ்நிலைகளில் பயனுள்ளதாக இருக்கும். இங்கே சில எடுத்துக்காட்டுகள்:
1. திட்டமிடல் மற்றும் நிகழ்வு மேலாண்மை
காலண்டர் பயன்பாடுகள், சந்திப்புத் திட்டமிடுபவர்கள் மற்றும் நிகழ்வு மேலாண்மை தளங்கள் போன்ற பயன்பாடுகளில், டெம்போரல் ஏபிஐ வெவ்வேறு நேர மண்டலங்களில் சந்திப்புகளைத் திட்டமிட கையாள முடியும். ஒரு உலகளாவிய நிறுவனம் ஒரு கூட்டத்தைத் திட்டமிடுவதைக் கவனியுங்கள். இந்த ஏபிஐ நேர மண்டல மாற்றங்களை துல்லியமாகக் கையாள உதவுகிறது மற்றும் வெவ்வேறு கண்டங்களில் உள்ள அணிகளுக்கு இடையில் ஒரு கூட்டத்தைத் திட்டமிடும்போது ஏற்படும் குழப்பத்தைத் தவிர்க்கிறது.
const meetingTimeInUTC = Temporal.PlainDateTime.from('2024-03-15T14:00:00');
const londonTZ = Temporal.TimeZone.from('Europe/London');
const newYorkTZ = Temporal.TimeZone.from('America/New_York');
const londonMeeting = meetingTimeInUTC.toZonedDateTime(londonTZ);
const newYorkMeeting = londonMeeting.toZonedDateTime(newYorkTZ);
console.log(`Meeting in London: ${londonMeeting.toLocaleString('en-GB')}`);
console.log(`Meeting in New York: ${newYorkMeeting.toLocaleString('en-US')}`);
2. இ-காமர்ஸ் மற்றும் சர்வதேச பரிவர்த்தனைகள்
இ-காமர்ஸ் தளங்கள் பெரும்பாலும் வெவ்வேறு நேர மண்டலங்களில் ஆர்டர்கள், ஷிப்பிங் நேரங்கள் மற்றும் விளம்பரங்களைக் கையாளுகின்றன. டெம்போரல் ஏபிஐ, பயனரின் இருப்பிடம் எதுவாக இருந்தாலும், ஆர்டர் காலக்கெடு, ஏற்றுமதி வருகை நேரங்கள் மற்றும் விளம்பர இறுதித் தேதிகளைத் துல்லியமாகக் காட்டப் பயன்படுத்தலாம். எடுத்துக்காட்டாக, உலகெங்கிலும் உள்ள வாடிக்கையாளர்களுக்கு ஒரு ஃபிளாஷ் விற்பனை சரியான உள்ளூர் நேரத்தில் முடிவடைகிறது என்பதை உறுதிப்படுத்துதல்.
// Suppose the sale ends at midnight UTC
const saleEndTimeUTC = Temporal.PlainDateTime.from('2024-03-01T00:00:00');
const userTimeZone = Temporal.TimeZone.from('America/Los_Angeles');
const saleEndTimeUserTime = saleEndTimeUTC.toZonedDateTime(userTimeZone);
console.log(`Sale ends at: ${saleEndTimeUserTime.toLocaleString('en-US', { timeZone: 'America/Los_Angeles' })}`);
3. நிதி பயன்பாடுகள்
நிதி பயன்பாடுகளுக்கு பரிவர்த்தனைகள், அறிக்கையிடல் மற்றும் கணக்கீடுகளுக்குத் துல்லியமான நேரம் மற்றும் தேதித் தகவல்கள் தேவை. டெம்போரல் ஏபிஐ-யின் மாறாத தன்மை மற்றும் நேர மண்டலக் கையாளுதல் நிதிப் பதிவுகளின் துல்லியத்தை உறுதிப்படுத்தவும் தரவு சிதைவைத் தவிர்க்கவும் உதவும்.
const transactionTime = Temporal.Now.zonedDateTime('UTC');
const transactionTimeInLocal = transactionTime.toZonedDateTime(Temporal.TimeZone.from('America/New_York'));
console.log(`Transaction time (UTC): ${transactionTime.toString()}`);
console.log(`Transaction time (New York): ${transactionTimeInLocal.toString()}`);
4. தரவு பகுப்பாய்வு மற்றும் அறிக்கையிடல்
தரவுப் பகுப்பாய்வில், வடிகட்டுதல், குழுவாக்குதல் மற்றும் அளவீடுகளைக் கணக்கிடுவதற்குத் துல்லியமான தேதி மற்றும் நேரக் கையாளுதல்கள் அவசியம். டெம்போரல் ஏபிஐ நம்பகமான பகுப்பாய்வுக் கருவிகளை உருவாக்க உதவுகிறது, குறிப்பாக நீங்கள் பல்வேறு நேர மண்டலங்களுடன் வேலை செய்யும் போது பயனுள்ளதாக இருக்கும்.
// Example: Calculate the age of users
const birthDate = Temporal.PlainDate.from('1990-05-10');
const today = Temporal.Now.plainDateISO();
const age = birthDate.until(today).days / 365.25; // Approximate Age
console.log(`Approximate age: ${Math.floor(age)} years`);
5. பதிவு செய்தல் மற்றும் தணிக்கை
தணிக்கைப் பதிவுகளைப் பராமரிக்க அல்லது நிகழ்வுகளைக் கண்காணிக்க வேண்டிய பயன்பாடுகள், நேர முத்திரைகளை ஒரு சீரான மற்றும் நம்பகமான முறையில் சேமிக்க டெம்போரல் ஏபிஐ-யைப் பயன்படுத்த வேண்டும், குறிப்பாக நேர மண்டலங்கள் கருத்தில் கொள்ளப்படும் இடங்களில்.
const eventTime = Temporal.Now.zonedDateTime('UTC');
console.log(`Event logged at: ${eventTime.toString()}`);
டெம்போரல் ஏபிஐ-யுடன் தொடங்குவது
டெம்போரல் ஏபிஐ இன்னும் எல்லா உலாவிகளிலும் இயல்பாகக் கிடைக்கவில்லை. இதைப் பயன்படுத்த, உங்களிடம் சில விருப்பங்கள் உள்ளன:
1. ஒரு பாலிஃபில் பயன்படுத்துதல்
டெம்போரல் ஏபிஐ-யைப் பயன்படுத்தத் தொடங்குவதற்கான எளிதான வழி ஒரு பாலிஃபில் பயன்படுத்துவதாகும். பாலிஃபில் என்பது ஒரு குறியீட்டுத் துண்டாகும், இது இன்னும் பூர்வீகமாக ஆதரிக்காத சூழல்களில் ஒரு புதிய ஏபிஐ-யின் செயல்பாட்டை வழங்குகிறது. டெம்போரல் குழுவால் பராமரிக்கப்படும் முதன்மை பாலிஃபில், npm-இல் கிடைக்கிறது:
npm install @js-temporal/polyfill
பின்னர், உங்கள் ஜாவாஸ்கிரிப்ட் குறியீட்டில், நீங்கள் பாலிஃபில்லை இறக்குமதி செய்து பயன்படுத்த வேண்டும்:
import '@js-temporal/polyfill';
// Now you can use the Temporal API
const today = Temporal.Now.plainDateISO()
console.log(today.toString());
இந்த அணுகுமுறை மிகவும் பரவலாகப் பரிந்துரைக்கப்படுகிறது மற்றும் இன்று கிட்டத்தட்ட எந்த ஜாவாஸ்கிரிப்ட் சூழலிலும் டெம்போரல் ஏபிஐ-யைப் பயன்படுத்தத் தொடங்க உங்களை அனுமதிக்கிறது.
2. ஒரு பண்ட்லர் பயன்படுத்துதல்
வெப்பேக், பார்சல் அல்லது ரோலப் போன்ற ஒரு பண்ட்லரைப் பயன்படுத்தி உங்கள் திட்டத்தில் பாலிஃபில்லைச் சேர்க்கலாம். இது பாலிஃபில் மற்றும் அதன் சார்புகளைச் சேர்க்கும் செயல்முறையை எளிதாக்குகிறது.
3. பூர்வீக ஆதரவுக்காகக் காத்திருத்தல்
டெம்போரல் ஏபிஐ தற்போது TC39 செயல்முறையின் நிலை 3-இல் உள்ளது, அதாவது இது எதிர்காலத்தில் உலாவிகள் மற்றும் ஜாவாஸ்கிரிப்ட் இயக்க நேரங்களில் செயல்படுத்தப்படும் வாய்ப்புள்ளது. நீங்கள் Can I Use போன்ற வலைத்தளங்களில் பூர்வீக ஆதரவைச் சரிபார்க்கலாம், வெவ்வேறு உலாவிகள் மற்றும் Node.js பதிப்புகளில் ஆதரவு நிலையைப் பார்க்க. பூர்வீக ஆதரவு கிடைக்கும்போது, நீங்கள் பாலிஃபில்லை அகற்றிவிட்டு ஏபிஐ-யை நேரடியாகப் பயன்படுத்தலாம்.
டெம்போரல் ஏபிஐ-யைப் பயன்படுத்துவதற்கான சிறந்த நடைமுறைகள்
டெம்போரல் ஏபிஐ-யிலிருந்து அதிகபட்சப் பயனடையவும் பொதுவான ஆபத்துகளைத் தவிர்க்கவும், இந்த சிறந்த நடைமுறைகளைக் கருத்தில் கொள்ளுங்கள்:
- மாறாத தன்மைக்கு முன்னுரிமை அளியுங்கள்: இருக்கும் டெம்போரல் ஆப்ஜெக்ட்களை மாற்றுவதை விட எப்போதும் புதியவற்றை உருவாக்குங்கள். இது உங்கள் குறியீட்டைப் பற்றி சிந்திப்பதை எளிதாக்குகிறது மற்றும் பிழைகளுக்குக் குறைவாகவே வழிவகுக்கிறது.
- நேர மண்டலம் சார்ந்த செயல்பாடுகளுக்கு `ZonedDateTime`-ஐப் பயன்படுத்தவும்: நேர மண்டலங்களைக் கையாளும்போது, துல்லியமான நேர மண்டல மாற்றங்கள் மற்றும் DST கையாளுதலை உறுதிப்படுத்த எப்போதும் `ZonedDateTime` ஆப்ஜெக்ட்களைப் பயன்படுத்தவும்.
- சரியான வகையைத் தேர்ந்தெடுக்கவும்: உங்கள் தேவைகளுக்குப் பொருத்தமான டெம்போரல் வகையைத் தேர்ந்தெடுக்கவும். எடுத்துக்காட்டாக, நேரம் அல்லது நேர மண்டலத் தகவல் இல்லாத தேதிகளுக்கு `PlainDate`-ஐப் பயன்படுத்தவும்.
- நேர மண்டல மாற்றங்களை கவனமாகக் கையாளவும்: பகல் சேமிப்பு நேர மாற்றங்கள் குறித்து அறிந்திருங்கள் மற்றும் அதற்கேற்ப உங்கள் குறியீட்டைத் திட்டமிடுங்கள், குறிப்பாக தேதி எண்கணிதத்தின் போது.
- மொழி சார்ந்த வடிவமைப்பைப் பயன்படுத்தவும்: பயனர்களுக்குத் தேதிகள் மற்றும் நேரங்களைக் காண்பிக்க `toLocaleString()`-ஐப் பயன்படுத்தவும், ஏனெனில் இது உள்ளூர் தேதி மற்றும் நேர வடிவங்களை தானாகவே கையாளுகிறது.
- சோதனை: தேதி மற்றும் நேர தர்க்கத்தை முழுமையாகச் சோதிக்கவும், DST மாற்றங்கள் மற்றும் நேர மண்டல மாற்றங்கள் தொடர்பான விளிம்பு நிலைகள் உட்பட, சாத்தியமான பிழைகளைக் கண்டறிய. ஒரு சோதனை லைப்ரரியைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.
- சீரான நேர மண்டல ஐடிகளைப் பயன்படுத்தவும்: செல்லுபடியாகும் IANA நேர மண்டல ஐடிகளைப் பயன்படுத்தவும் (எ.கா., 'America/New_York', 'Europe/London').
- பயனர் விருப்பங்களைக் கருத்தில் கொள்ளுங்கள்: தேதி மற்றும் நேர வடிவங்களுக்கான பயனர் விருப்பங்களை மனதில் கொள்ளுங்கள், மேலும் பயனர்கள் உங்கள் பயன்பாட்டில் தேதிகள் மற்றும் நேரங்களின் காட்சியைத் தனிப்பயனாக்க அனுமதிக்கவும்.
ஜாவாஸ்கிரிப்ட்டில் தேதி மற்றும் நேரத்தின் எதிர்காலம்
டெம்போரல் ஏபிஐ தற்போதுள்ள `Date` ஆப்ஜெக்ட்டை விட ஒரு குறிப்பிடத்தக்க முன்னேற்றத்தைக் குறிக்கிறது. அதன் மாறாத வடிவமைப்பு, தெளிவான ஏபிஐ, வலுவான நேர மண்டலக் கையாளுதல் மற்றும் பன்னாட்டுமயமாக்கலில் கவனம் செலுத்துவதன் மூலம், உலகளவில் செயல்படும் நம்பகமான மற்றும் பராமரிக்கக்கூடிய பயன்பாடுகளை உருவாக்குவதற்கான சிறந்த அடித்தளத்தை இது வழங்குகிறது. டெம்போரல் ஏபிஐ தரப்படுத்தல் மற்றும் உலாவிகள் மற்றும் இயக்க நேரங்களில் பூர்வீகச் செயலாக்கத்தை நெருங்கி வருவதால், டெவலப்பர்கள் ஜாவாஸ்கிரிப்ட்டில் தேதிகள் மற்றும் நேரங்களுடன் வேலை செய்வதற்கு மிகவும் நெறிப்படுத்தப்பட்ட மற்றும் துல்லியமான வழியை எதிர்பார்க்கலாம்.
டெம்போரல் ஏபிஐ-யின் தழுவல், சிக்கலான தேதி மற்றும் நேர செயல்பாடுகளைக் கையாள வெளிப்புற லைப்ரரிகளின் தேவையைக் கணிசமாகக் குறைக்கும், இது மேம்பாட்டை எளிதாக்கும் மற்றும் பயன்பாட்டு செயல்திறனை மேம்படுத்தும். இது ஜாவாஸ்கிரிப்ட் சுற்றுச்சூழல் அமைப்பு இந்த வரலாற்றுச் சவால்களை எதிர்கொள்ள வழிவகுக்கிறது. டெவலப்பர்கள் தங்கள் பயன்பாடுகளை மிகவும் வலுவானதாகவும், உலகளாவிய பார்வையாளர்களுக்குச் சேவை செய்ய நன்கு தயாராகவும் ஆக்குவதற்கு, டெம்போரல் ஏபிஐ-யை ஒருங்கிணைத்து தேதிகள் மற்றும் நேரங்களை மிகவும் எளிதாகவும் துல்லியமாகவும் கையாளத் தங்களைத் தயார்படுத்திக் கொள்ள வேண்டும்.
முடிவுரை
டெம்போரல் ஏபிஐ ஜாவாஸ்கிரிப்ட் மொழிக்கு ஒரு சக்திவாய்ந்த மற்றும் அவசியமான கூடுதலாகும். டெம்போரல் ஏபிஐ-யைத் தழுவுவதன் மூலம், டெவலப்பர்கள் தங்கள் பயன்பாடுகளின் துல்லியம், நம்பகத்தன்மை மற்றும் பராமரிப்புத் திறனை கணிசமாக மேம்படுத்த முடியும். இது உலகளாவிய பார்வையாளர்களுக்கான பயன்பாடுகளை உருவாக்கும் டெவலப்பர்களுக்கு குறிப்பாக மதிப்புமிக்கது, அங்கு துல்லியமான நேர மண்டலக் கையாளுதல் மற்றும் பன்னாட்டுமயமாக்கல் முக்கியமானவை. இணையம் தொடர்ந்து விரிவடைந்து உலகளாவிய பார்வையாளர்களை அடையும் போது டெம்போரல் ஏபிஐ-யை ஏற்றுக்கொள்வது பெருகிய முறையில் முக்கியமானதாக மாறும். இந்த வழிகாட்டியில் கோடிட்டுக் காட்டப்பட்டுள்ள முக்கியக் கருத்துகள் மற்றும் சிறந்த நடைமுறைகளைப் புரிந்துகொள்வது, டெம்போரல் ஏபிஐ-யின் முழுத் திறனையும் பயன்படுத்தவும், மேலும் வலுவான மற்றும் பயனர் நட்பு பயன்பாடுகளை உருவாக்கவும் உதவும்.