तारीख़, संख्या, मुद्रा और टाइम ज़ोन
किसी date, number या पैसे की amount की एक value होती है और कई presentations। Stored instant 2026-03-04T21:30:00Z New York के user के लिए 4 March, 4:30 PM है और Riyadh के user के लिए 5 March, 00:30। Number 1234567.89 en-US में 1,234,567.89, de-DE में 1.234.567,89, hi-IN में 12,34,567.89 और ar-SA में ١٬٢٣٤٬٥٦٧٫٨٩ है। Locale, यानी language और region को मिलाकर बना BCP 47 tag जैसे ar-SA या hi-IN, calendar, digits, separators, महीनों के नाम और currency symbol तय करता है; time zone तय करता है कि instant किस calendar day और किस घड़ी के समय पर पड़ता है।
इस area को test करने का मतलब है value और उसकी presentation को अलग रखना। हर ऐसे field के लिए जो ऐसी value दिखाता, स्वीकार करता, store करता या compare करता है, आप जाँचते हैं कि क्या store होता है (एक canonical form), हर locale क्या दिखाता है (formatting library से बना, string templates से नहीं) और user अपने format में जो value टाइप करता है उसके साथ क्या होता है। Character encoding के lesson ने बताया था कि text system में अपनी यात्रा कैसे सही-सलामत पूरी करता है; यह lesson उन values के बारे में है जिनका मतलब इस पर निर्भर है कि user कहाँ है।
यह क्यों ज़रूरी है
ये defects सीधे पैसे और भरोसे की कीमत लेते हैं। गलत क्रम में parse हुई date 4 March की जगह 3 April की flight book कर देती है। गलत decimal separator से parse हुई amount 1.500 को डेढ़ riyal या पंद्रह सौ बना देती है। UTC day से grouped report Riyadh में 00:30 पर रखे गए order को पिछले दिन में दिखाती है, इसलिए daily totals bank से कभी नहीं मिलते। जब rule total पर rounding कहता हो तब हर line पर round की गई VAT invoice को accounting records से एक halala (riyal का सौवाँ हिस्सा) अलग कर देती है, और फिर किसी को यह फ़र्क़ ढूँढकर समझाना पड़ता है।
Tester के लिए मुश्किल यह है कि ये defects उसके अपने environment में दिखते ही नहीं। Riyadh से English browser में आपको Western digits, बिना daylight saving time का +03:00 zone और एक calendar दिखता है। Jeddah का user Arabic-Indic digits और Hijri calendar के साथ, Kolkata का user +05:30 पर और London का user जिसकी घड़ी March में बदलती है, ऐसे failures से टकराते हैं जो आपने कभी पैदा ही नहीं किए। Locale और time zone को browser या device की तरह जान-बूझकर test conditions के रूप में चुनना पड़ता है।
एक value, कई presentations
हर locale-sensitive value की एक canonical form होती है जिसे product को store और transmit करना चाहिए: instant ISO 8601 (या RFC 3339, जो internet protocols के लिए उसकी profile है) में UTC या explicit offset के साथ, 2026-03-04T21:30:00Z या 2026-03-05T00:30:00+03:00; number dot वाला सादा decimal, 1234567.89; amount एक decimal और ISO 4217 currency code, {"amount": "42.95", "currency": "SAR"}। Presentation edge पर एक formatting library बनाती है जो Unicode CLDR project के locale data पर टिकी है: browsers और Node.js में Intl API, Android और iOS पर ICU (International Components for Unicode) पर आधारित APIs।
Locale एक BCP 47 language tag है: en-US, en-GB, ar-SA, hi-IN। Language subtag शब्द और नाम चुनता है; region subtag digits, separators, calendar और हफ़्ते के पहले दिन के defaults बदलता है। Currency इनमें नहीं है: वह amount के साथ उसके ISO 4217 code के रूप में चलती है। Unicode extensions किसी default को explicitly override करते हैं: ar-SA-u-nu-latn Western digits माँगता है, ar-SA-u-ca-islamic-umalqura Umm al-Qura calendar, hi-IN-u-nu-deva Devanagari digits। Figure दिखाता है कि एक date, एक number और एक amount की presentations कितनी दूर चली जाती हैं जबकि stored values बिल्कुल नहीं बदलतीं।
Intl से rendered: हिस्सों का क्रम, digits, separators, महीने का नाम, calendar और currency की position सब बदलते हैं जबकि stored values वही रहती हैं।| Locale tag | छोटी datedateStyle: short | लंबी datedateStyle: long | संख्या (number)style: decimal | राशि (amount)style: currency |
|---|---|---|---|---|
| स्टोर की गई valueISO 8601 date, सादा decimal, amount अपने ISO 4217 code के साथ | 2026-03-04 | 2026-03-04 | 1234567.89 | 1500.00 SAR |
en-USअंग्रेज़ी, संयुक्त राज्य: दिन से पहले महीना | 3/4/26 | March 4, 2026 | 1,234,567.89 | SAR 1,500.00 |
en-GBअंग्रेज़ी, यूनाइटेड किंगडम: महीने से पहले दिन | 04/03/2026 | 4 March 2026 | 1,234,567.89 | SAR 1,500.00 |
de-DEजर्मन, जर्मनी: separators उलटे, code amount के बाद | 04.03.26 | 4. März 2026 | 1.234.567,89 | 1.500,00 SAR |
hi-INहिंदी, भारत: देवनागरी में महीने का नाम, लाख और करोड़ grouping | 4/3/26 | 4 मार्च 2026 | 12,34,567.89 | SAR 1,500.00 |
ar-SAअरबी, सऊदी अरब: Arabic-Indic digits, Arabic separators, symbol amount के बाद | ٤/٣/٢٠٢٦ | ٤ مارس ٢٠٢٦ | ١٬٢٣٤٬٥٦٧٫٨٩ | ١٬٥٠٠٫٠٠ ر.س. |
ar-JOअरबी, जॉर्डन: वही digits और amount, Levantine महीने का नाम | ٤/٣/٢٠٢٦ | ٤ آذار ٢٠٢٦ | ١٬٢٣٤٬٥٦٧٫٨٩ | ١٬٥٠٠٫٠٠ ر.س. |
ar-SA-u-ca-islamic-umalquraअरबी, सऊदी अरब, Umm al-Qura calendar माँगा गया: दूसरी date, वही number | ١٥/٩/١٤٤٧ هـ | ١٥ رمضان ١٤٤٧ هـ | ١٬٢٣٤٬٥٦٧٫٨٩ | ١٬٥٠٠٫٠٠ ر.س. |
- एक बार, canonical form में stored
- Unicode extension जो product explicitly माँगता है
Node.js 22 (ICU 78, CLDR 48) का output; कोई दूसरा runtime या CLDR version अलग हो सकता है। Arabic cells में formatter के डाले invisible right-to-left marks (U+200F) और no-break spaces (U+00A0) रखे गए हैं।
- Stored: क्या canonical value सही और unambiguous है, अपने offset या zone और currency code के साथ?
- Displayed: क्या हर supported locale इसे library के ज़रिए render करता है, उन digits, separators, calendar और symbol के साथ जो product ने तय किए?
- Entered: क्या user के अपने format में टाइप की गई value उसी locale से parse होती है, normalise होती है या साफ़ message के साथ reject होती है, और कभी चुपचाप गलत नहीं पढ़ी जाती?
Dates, calendars और time zones
Date presentation के तीन स्वतंत्र आयाम हैं। हिस्सों का क्रम: 3/4/26 en-US में 4 March है और 04/03/2026 en-GB में 4 March, इसलिए string 03/04/2026 दोनों में अलग दिन बताती है। Digits और नाम: Arabic-Indic digits, localised महीनों के नाम, और Levantine Arabic (ar-JO, ar-SY) में March को آذار कहते हैं जबकि Saudi Arabic में مارس। Calendar: Saudi Arabia में Umm al-Qura calendar Gregorian के साथ-साथ चलता है, 4 March 2026 15 Ramadan 1447 AH है, और Hijri महीना 29 या 30 दिन का होता है, इसलिए दोनों calendars के month ends अलग पड़ते हैं।
Time zone locale का हिस्सा नहीं है: वह user, device या account का होता है। Instant समय का एक बिंदु है; उसका wall-clock time और यहाँ तक कि calendar day भी zone पर निर्भर है। Asia/Riyadh बिना daylight saving time का UTC+03:00 है, Asia/Kolkata UTC+05:30, Asia/Kathmandu UTC+05:45, और Europe/London व America/New_York साल में दो बार अपना offset बदलते हैं। Instants को UTC में या explicit offset के साथ store करें, zones को offset से नहीं बल्कि उनके IANA नाम से पहचानें, सिर्फ़ display के लिए convert करें, और उन पलों को test करें जहाँ दिन बदलता है।
- Test values: दोनों calendars में महीने और साल का आख़िरी दिन, 29 February 2028, user के zone में 23:59 और 00:00, और daylight saving time लागू करने वाले zone के change days।
- Date-only values जैसे date of birth या due date का कोई zone नहीं होता और server या देखने वाला कहीं और हो तो वे shift नहीं होनी चाहिए।
- Seconds और milliseconds वाले timestamps आपस में उलझ जाते हैं: हज़ार गुना छोटी value January 1970 में जा गिरती है, हज़ार गुना बड़ी दूर भविष्य के किसी साल में।
One instant, stored once: 2026-03-04T21:30:00Z
Zone (IANA) Offset Local wall-clock time Calendar day
UTC +00:00 2026-03-04 21:30 4 March
Europe/London +00:00 2026-03-04 21:30 4 March (BST from 29 March)
America/New_York -05:00 2026-03-04 16:30 4 March (EDT from 8 March)
Asia/Riyadh +03:00 2026-03-05 00:30 5 March
Asia/Kolkata +05:30 2026-03-05 03:00 5 March
Asia/Kathmandu +05:45 2026-03-05 03:15 5 March
A report grouped by "day" lists this order on 4 March in London
and on 5 March in Riyadh. Both are right; the report must name its zone.आज़माएँ: ISO 8601 कन्वर्टर आज़माएँ: टाइमस्टैम्प कन्वर्टर आज़माएँ: तारीख़ टेस्ट डेटा जनरेटर
Numbers, digits और currency
Number presentation में एक digit system और दो separators होते हैं: en-US 1,234,567.89 लिखता है, de-DE 1.234.567,89, fr-FR narrow no-break space के साथ 1 234 567,89, hi-IN भारतीय grouping में 12,34,567.89, जहाँ पहले तीन अंकों के बाद हर group दो अंकों का होता है (एक lakh = 1,00,000 यानी 100,000, और एक crore = 1,00,00,000 यानी 10 million), ar-SA Arabic-Indic digits और Arabic separators U+066C व U+066B के साथ ١٬٢٣٤٬٥٦٧٫٨٩। इसलिए एक ही string के अलग मतलब हैं: 1.500 en-US में डेढ़ है और de-DE में पंद्रह सौ। Input उसी locale से parse होना चाहिए जिसमें user ने टाइप किया, और Arabic-Indic digits पर runtimes एकमत नहीं हैं: JavaScript में Number("٥٠٠") NaN देता है, जबकि Python में int("٥٠٠") 500 लौटाता है। इसलिए product को तय करना होगा, और requirement में लिखना होगा, कि ऐसे digits 0–9 में normalise होंगे या साफ़ message के साथ reject होंगे।
पैसा currency और rounding rule जोड़ देता है। Amount एक decimal और ISO 4217 code है, और ISO 4217 हर currency की minor unit भी देता है, यानी decimal places की संख्या: SAR और INR के लिए दो, JPY के लिए शून्य, KWD, BHD, JOD और OMR के लिए तीन, इसलिए "दो decimals" कोई universal rule नहीं है। Binary floating point ज़्यादातर decimal amounts को exact नहीं रख सकता: JavaScript में 0.1 + 0.2 से 0.30000000000000004 मिलता है और 3 * 12.45 से 37.349999999999994। Amounts की जगह minor units के integers या decimal type में है, और requirement को बताना होगा कि rounding कहाँ और किस rule से होती है। Symbol और उसकी position locale से आती है, template से नहीं: en-US में SAR 1,500.00, de-DE में 1.500,00 SAR, ar-SA में ١٬٥٠٠٫٠٠ ر.س., जहाँ string के दोनों सिरों पर right-to-left marks (U+200F) और symbol से पहले no-break space भी होता है, इसीलिए हाथ से टाइप की expected string fail होती है जबकि screen सही दिखती है। Screen पर यही marks amount और उसके symbol को Latin या neutral text के बगल में भी right-to-left क्रम में रखते हैं, इसलिए ر.س. number के बाईं ओर दिखता है, हालाँकि string में खुद digits पहले आते हैं; इसके पीछे का Unicode Bidirectional Algorithm roadmap का अगला step, RTL testing guide, समझाती है।
- Identifiers quantities नहीं हैं: phone numbers, IBANs, order numbers और national ID numbers कभी grouped, rounded या localised digits में नहीं दिखाए जाते।
- -42.95 का refund ठीक उसी तरह round होना चाहिए जैसे वह charge जिसे वह reverse करता है; minus sign और percent sign कहाँ लगेंगे और उनके आसपास कौन-से invisible marks होंगे, यह भी locale तय करता है।
- अलग currencies की amounts कभी न जोड़ें; SAR और INR lines को जोड़ने वाला total data का defect है, formatting का सवाल नहीं।
Order: 3 x 12.45 SAR, VAT 15 %
Rule A, VAT on the subtotal: 37.35 x 0.15 = 5.6025 -> 5.60 total 42.95
Rule B, VAT per line: 12.45 x 0.15 = 1.8675 -> 1.87 x 3 = 5.61 total 42.96
Both are "15 % VAT rounded to 2 decimals". The requirement must name the rule,
and the test must use amounts on which the two rules differ.आज़माएँ: डेसिमल डेटासेट जनरेटर आज़माएँ: अरबी टेस्ट डेटा जनरेटर
Worked example: एक order, तीन users
Order API नीचे दिया record लौटाता है। तीन लोग confirmation page खोलते हैं: Jeddah में Noura (ar-SA, product settings में Western digits चुने हुए, zone Asia/Riyadh), Kolkata में Priya (hi-IN, Asia/Kolkata) और London में finance team (en-GB, Europe/London)। हर expected value stored record से उसी library के ज़रिए निकाली जाती है जो product इस्तेमाल करता है, याद से कभी नहीं टाइप की जाती।
- Noura: order 5 March 2026 को 00:30 पर रखा गया; total
42.95 ر.س., Western digits क्योंकि setting यही कहती है, symbol ar-SA formatter की तय जगह पर, और पूरी string right-to-left paragraph में सही। - Priya: order 5 March 2026 को 03:00 पर; total
SAR 42.95, ISO code क्योंकि hi-IN formatter riyal के लिए code दिखाता है और product currencies convert नहीं करता। - Finance: order 4 March 2026 को 21:30 पर; total
SAR 42.95। 4 March की daily report में यह order शामिल है जबकि Noura की order list इसे 5 March के नीचे दिखाती है; दोनों सही हैं, और report के header में उसका zone लिखा होना चाहिए। - जिन defects की तलाश करें: Noura के page पर
4/3/2026या3/5/2026(UTC day, या en-US क्रम), VAT5.61(हर line पर rounded), setting में Western digits होने के बावजूद٤٢٫٩٥, template से चिपकायाSAR42.95जिससे हर locale को एक ही string दिखे, और page के अपनी ही formatted string को दोबारा parse करने के बाद बदला हुआ total।
{
"order_id": "ORD-2026-0042",
"placed_at": "2026-03-04T21:30:00Z",
"subtotal": "37.35",
"vat": "5.60",
"total": "42.95",
"currency": "SAR"
}आम गलतियाँ
- Expected strings हाथ से टाइप करना और formatter के डाले invisible characters (U+200F, U+00A0, U+202F) पर fail होना, या इसलिए pass होना कि test सब कुछ हटा देता है, वे separators भी जो मायने रखते हैं।
- ऐसी "गलत date" report करना जो user के zone में सही है, या ऐसी गलत date स्वीकार कर लेना क्योंकि किसी ने zone नहीं देखा; stored instant, zone और locale साथ में record करें।
- सिर्फ़ एक जगह से test करना: बिना daylight saving time वाला +03:00 पर Riyadh वे DST और half-hour defects कभी नहीं दिखाता जिनसे Kolkata, London या New York के users टकराते हैं।
- "दो decimals, rounded" को specification मान लेना बिना यह पूछे कि rounding कहाँ होती है और किस rule से, फिर expected totals ऐसी spreadsheet में निकालना जो अलग तरह से round करती है।
- Identifiers को localise करना: amounts की तरह grouped phone numbers, Arabic-Indic digits में order numbers, thousands separators वाला IBAN।
- यह मान लेना कि
ar-SAक्या देगा: digits और calendar के defaults हर runtime के अंदर की CLDR version से आते हैं और सालों में बदले हैं, इसलिए जब तक product उन्हें explicitly न माँगे, browser, server और mobile app आपस में असहमत हो सकते हैं।
QA का नज़रिया
असली team में यह काम requirements review से शुरू होता है। हर date, number और amount field के लिए आप पूछते हैं कि यह कैसे store होता है, हर supported locale में कैसे दिखता है और input कैसे parse होता है, और जवाब acceptance criteria में लिखते हैं। Developers से पूछें कि कौन-सी formatting library और कौन-सी CLDR या ICU version हर runtime ship करता है, product owner से पूछें कि product हर locale में कौन-से digits और calendar इस्तेमाल करता है और क्या users उन्हें override कर सकते हैं, और finance से पूछें कि VAT कहाँ round होती है। जवाब test conditions बन जाते हैं, locale × zone × runtime, compatibility matrix में browsers की तरह चुने गए।
Execution के दौरान expected values हाथ से नहीं, उसी library से generate करें, और ऐसे instants और amounts का छोटा set रखें जो फ़र्क़ उजागर करे: Riyadh में आधी रात के ठीक बाद का समय, DST change वाले दिन की date, ऐसी amount जिसकी per-line और total rounding अलग हो, Arabic-Indic digits में टाइप किया number। यहाँ अच्छी bug report में raw stored value, locale tag, zone identifier, runtime version, expected presentation और आपने उसे कैसे निकाला, सब होता है; इनके बिना developer formatting defect और गलत stored value में फ़र्क़ नहीं कर सकता।
अभ्यास
साल के आख़िर वाले order की expected values निकालें
Order API नीचे दिया record लौटाता है: एक office printer की तीन units, 38,450.35 SAR प्रति unit, और order UTC में साल की आख़िरी शाम को रखा गया। Rule कहता है: "VAT 15 % order के subtotal पर calculate होती है और half up दो decimals तक round होती है; dates customer के time zone में दिखती हैं; amounts customer के locale में formatted होती हैं, Arabic के लिए Western digits के साथ।" Finance team अपनी reports UTC में बनाती है।
दो customers यही order एक ही instant पर रखते हैं: एक Riyadh में (ar-SA, Asia/Riyadh) और एक Kolkata में (hi-IN, Asia/Kolkata)। Expected subtotal, VAT और total निकालें, हर customer और finance report को दिखने वाली date और time, और वे checks जो आप Arabic और Hindi confirmation pages पर चलाएँगे। फिर quantity field के लिए एक negative test लिखें और नोट करें कि rule में अब भी क्या अस्पष्ट है।
{
"order_id": "ORD-2026-0917",
"placed_at": "2026-12-31T20:15:00Z",
"lines": [{ "sku": "PRN-400", "qty": 3, "unit_price": "38450.35" }],
"currency": "SAR"
}- बताए गए rule से और per-line rounding से subtotal, VAT और total निकालें, ताकि पता चले कि इस order पर दोनों में फ़र्क़ किया जा सकता है या नहीं।
- Stored instant को
Asia/RiyadhऔरAsia/Kolkataमें convert करें और हर एक में calendar day और साल नोट करें, फिर finance report के लिए UTC में। - लिखें कि ar-SA page पर क्या verify करना है (digits, separators, symbol की position, direction, invisible characters) और hi-IN page पर क्या (grouping, code या symbol)।
٣टाइप की गई quantity का negative test और product owner व finance के लिए खुले सवाल लिखें।
मॉडल उत्तर दिखाएँ
Subtotal 3 × 38,450.35 = 115,351.05; VAT 115,351.05 × 0.15 = 17,302.6575, half up round करके 17,302.66; total 132,653.71। Per line, 5,767.5525 round होकर 5,767.55 बनता है, 3 से गुणा करके 17,302.65 और total 132,653.70, इसलिए किसी भी page या invoice पर 132,653.70 बताए गए rule के विरुद्ध defect है। हिसाब decimal type में या halalas में करें: JavaScript में 3 * 38450.35 से 115351.04999999999 मिलता है, इसलिए round करने की जगह truncate करने वाला code subtotal 115,351.04 दिखाता है।
Riyadh (+03:00): 31 December 2026, 23:15। Kolkata (+05:30): 1 January 2027, 01:45। UTC में finance report: 31 December 2026, 20:15। एक ही order Riyadh के customer और finance के लिए 2026 का है और Kolkata के customer के लिए 2027 का, इसलिए हर वह जगह जाँचें जो साल निकालती है: invoice date, साल के हिसाब से grouped order list, "इस साल" filter और annual report। अगर Riyadh page Umm al-Qura date दिखाता है तो वह 22 Rajab 1448 है।
ar-SA page: rule के अनुसार Western digits (132,653.71, ١٣٢٬٦٥٣٫٧١ नहीं), symbol formatter की तय जगह पर, string right-to-left context में पढ़ने लायक, invisible marks मौजूद पर layout न बिगाड़ें, और expected string उसी formatting call से ली गई। hi-IN page: total एक lakh से ऊपर है, इसलिए Indian grouping में SAR 1,32,653.71 दिखना चाहिए; SAR 132,653.71 का मतलब है कि page ने Western grouping या hard-coded format इस्तेमाल किया। Riyal code SAR के रूप में दिखता है क्योंकि product currencies convert नहीं करता।
Negative test: Arabic page पर टाइप की गई quantity ٣ या तो 3 में normalise हो और subtotal 115,351.05 ही रहे, या Arabic में message के साथ reject हो; वह कभी 0, NaN या खाली order न बने। खुले सवाल: साल बदलने के पल पर रखे गए order का tax period और invoice का साल कौन-सा zone तय करता है; क्या "half up" negative refund amounts पर भी लागू है; customer यात्रा में हो तो कौन-सा zone लागू है।
अक्सर पूछे जाने वाले सवाल
क्या हर date UTC में store होनी चाहिए?
Instants (कुछ कब हुआ या होगा) UTC में या explicit offset के साथ store करें और display के लिए convert करें। Date of birth, due date या public holiday जैसी date-only values का कोई zone नहीं होता और वे सादी dates ही रहनी चाहिए। दूर भविष्य में local time में scheduled events के लिए local time को IANA zone identifier के साथ रखें, क्योंकि offset के rules event से पहले बदल सकते हैं।
क्या time zone localisation testing का हिस्सा है?
उसके साथ test होता है, पर वह locale की property नहीं है। एक hi-IN user Riyadh में बैठा हो सकता है और एक en-GB user Kolkata में। Locale और zone को दो स्वतंत्र test conditions मानें और उन्हें जान-बूझकर combine करें, जैसे browser और operating system को करते हैं।
Screen पर amount सही दिखती है तो मेरा assertion fail क्यों होता है?
Formatted strings में ऐसे characters होते हैं जो आप देख नहीं सकते: Arabic amounts के आसपास right-to-left marks (U+200F), symbol से पहले no-break space (U+00A0), French grouping separator के रूप में narrow no-break space (U+202F)। Expected string उसी formatting API और locale से generate करें, या दोनों तरफ़ जान-बूझकर normalise करें और test में यह बात लिखें।
क्या ar-SA का मतलब हमेशा Arabic-Indic digits और Hijri calendar है?
नहीं। Defaults हर runtime के CLDR data से आते हैं और versions के बीच बदले हैं; उदाहरण के लिए Node.js 22 और मौजूदा Chromium ar-SA को Gregorian calendar के साथ Arabic-Indic digits देते हैं। Product को जो चाहिए वह explicitly माँगना चाहिए (-u-nu-latn, -u-ca-islamic-umalqura), और आपको वह test करना चाहिए जो product ने configure किया, हर उस runtime पर जिसे वह ship करता है।
संदर्भ
- Unicode CLDR ProjectCommon Locale Data Repository: तारीख़, समय, संख्या व मुद्रा फ़ॉर्मेट और plural नियमों का locale डेटा जिसे ज़्यादातर प्लेटफ़ॉर्म इस्तेमाल करते हैं।
- Time Zone Databaseदुनिया के time zone और उनके ऐतिहासिक offset व daylight-saving नियमों का tz डेटाबेस, जो साल में कई बार अपडेट होता है।
- ISO 4217 — Currency codesतीन-अक्षरी मुद्रा कोड (SAR, INR, USD…) और उनकी minor units — मुद्रा फ़ील्ड और फ़ॉर्मेटिंग टेस्ट का संदर्भ।
- RFC 3339: Date and Time on the Internet: TimestampsISO 8601 का इंटरनेट टाइमस्टैम्प प्रोफ़ाइल (2026-09-23T10:15:00Z) और उसके ऑफ़सेट नियम।
Mutqan tools से अभ्यास करें
तारीख़ और समय को अलग-अलग timezone के बीच बदलें (रियाद, अम्मान, दिल्ली, UTC, न्यूयॉर्क, लंदन…)।
ISO 8601 डेट-टाइम स्ट्रिंग, अवधि और अंतराल पार्स करें और बनाएँ।
टाइमस्टैम्प (सेकंड, मिलीसेकंड, माइक्रोसेकंड) को पढ़ने योग्य तारीख़ में और वापस बदलें, किसी भी timezone में।
तारीख़ों के डेटासेट जनरेट करें: किसी रेंज में रैंडम तारीख़ें, leap day, महीने के अंत, DST किनारे और कई फ़ॉर्मेट।
तय परिशुद्धता, करेंसी जैसी राशियों और राउंडिंग edge cases के साथ decimal / floating-point डेटासेट जनरेट करें।
लोकलाइज़ेशन टेस्टिंग के लिए अरबी नाम, पते, वाक्य, संख्याएँ (अरबी-हिंदसी अंक) और RTL edge case जनरेट करें।
और गहराई से
इस topic में आपकी प्रगति
प्रगति ट्रैक करने के लिए साइन इन करें
Topics पूर्ण चिह्नित करें, जहाँ छोड़ा था वहीं से जारी रखें और specialisation परीक्षाएँ खोलें।