දිවා ආලෝකය ඉතිරි කිරීමේ කාලය සහ කාල කලාපයේ හොඳම භාවිතයන් [වසා ඇත]


2051

මෙම ප්‍රශ්නය සහ එයට පිළිතුරු දිවා ආලෝකය ඉතිරි කිරීමේ කාලය සමඟ ගනුදෙනු කිරීමේ නිශ්චිත මඟ පෙන්වීම ලබා දීමට මම බලාපොරොත්තු වෙමි.

ඔබට එකතු කිරීමට යමක් ඇත්නම්, කරුණාකර කරන්න

බොහෝ පද්ධති රඳා පවතින්නේ නිවැරදි වේලාවක් තබා ගැනීම මත ය, ගැටළුව වන්නේ දිවා ආලෝකය ඉතිරිකිරීම නිසා කාලය වෙනස් වීමයි - ඔරලෝසුව ඉදිරියට හෝ පසුපසට ගෙන යාම.

නිදසුනක් වශයෙන්, ඇණවුමේ වේලාව මත රඳා පවතින ඇණවුම් ගැනීමේ පද්ධතියක යමෙකුට ව්‍යාපාරික නීති තිබේ - ඔරලෝසුව වෙනස් වුවහොත්, නීති එතරම් පැහැදිලි නොවිය හැකිය. ඇණවුමේ කාලය දිගටම පැවතිය යුත්තේ කෙසේද? ඇත්ත වශයෙන්ම නිමක් නැති අවස්ථා ගණනාවක් තිබේ - මෙය හුදෙක් නිදර්ශනීය එකකි.

  • දිවා ආලෝකය ඉතිරි කිරීමේ ගැටලුව සමඟ ඔබ කටයුතු කර ඇත්තේ කෙසේද?
  • ඔබේ විසඳුමේ කොටසක් වන උපකල්පන මොනවාද? (මෙහි සන්දර්භය සොයමින්)

වැදගත් ලෙස, එසේ නොවේ නම්:

  • සාර්ථක නොවූ ඔබ උත්සාහ කළේ කුමක්ද?
  • එය ක්‍රියාත්මක නොවන්නේ ඇයි?

වැඩසටහන්කරණය, මෙහෙයුම් පද්ධතිය, දත්ත නොනැසී පැවතීම සහ ගැටලුවේ අදාළ වෙනත් අංශ පිළිබඳව මම උනන්දු වෙමි.

සාමාන්‍ය පිළිතුරු විශිෂ්ටයි, නමුත් විස්තර එක් වේදිකාවක පමණක් තිබේ නම් ඒවා දැකීමට මා කැමතිය.


2
atabatishchev - GETDATE()SQL හි මෙම ක්‍රමය UTC වනු ඇත (කැමති පරිදි DateTime.Now). තවද කිසිදු ආකාරයක ස්වයංක්‍රීය ඩීඑස්ටී වෙනස්කම් මගින් සේවාදායකය ක්‍රියාත්මක නොවේ.
Oded

4
DedOded: "සේවාදායකයේ" එකතු වේ නම් මට එකඟ විය හැකිය. නමුත් තවමත් එය දේශීය වේලාව අවශ්‍ය වෙනත් යෙදුම් වලට බලපායි. මේ හා වෙනත් හේතූන් නිසා යූටීසී වේලාව පැහැදිලිව ඉල්ලා සිටීම වඩා හොඳ යැයි මම සිතමි.
abatishchev

7
යූටීසී වඩාත් සුදුසු වන්නේ GMT වලටය, එය වඩාත් නිවැරදිව නිර්වචනය කර ඇති නිසා සහ සමහර මෙහෙයුම් පද්ධතිවල GMT අර්ථ දැක්වීම් අවුල් වී ඇති නිසාය. "GMT" සහ "UTC" යන වචන එකිනෙකට හුවමාරු කළ හැකි යැයි සැලකීම සාමාන්‍ය දෙයක් වන නමුත් ඒවා සම්පූර්ණයෙන්ම නොවේ. ඕනෑම මෘදුකාංග / පද්ධති අරමුණු සඳහා පාහේ UTC භාවිතා කරන්න. Stackoverflow.com/questions/2292334/…
ක්‍රිස් ජොන්සන්

7
Os ජොෂ්ස්ටෝඩෝලා - ජෝන් ස්කීට්ගේ ' පිළිතුර '.
කෙනී එවිට්

1
Od ඔබට සේවාදායකය යූටීසී හි පවතිනු ඇතැයි උපකල්පනය කළ නොහැක, කාල කලාපය "යූටීසී" වූ නමුත් ඩීඑස්ටී අයදුම් කළ නිෂ්පාදන සේවාදායකයන් වසරකට වැඩි කාලයක් සඳහා යූටීසී + 1 විය. පැහැදිලි හා භාවිතය විය @abatishchev සමග එකඟ DateTime.UtcNowහා GETUTCDATE()එය ඇත්ත වශයෙන්ම ඔබ ඒ ගැන කල්පනා කර ඇති බව අනෙකුත් devs පෙන්නුම් කරන්නේ,
ono2012

Answers:


944

පිළිතුරු සහ වෙනත් දත්තවල සාරාංශය: (කරුණාකර ඔබේ ඒවා එකතු කරන්න)

කරන්න:

  • ඔබ නියමිත වේලාවට නිශ්චිත මොහොතක් ගැන සඳහන් කරන සෑම අවස්ථාවකම දිවා කාලයේ ඉතිරිකිරීම් වලට බලපෑමක් නොවන ඒකාබද්ධ ප්‍රමිතියකට අනුව කාලය දිගටම කරගෙන යන්න. (GMT සහ UTC මේ සම්බන්ධයෙන් සමාන වේ, නමුත් UTC යන පදය භාවිතා කිරීම වඩාත් සුදුසුය. UTC ජුලූ හෝ ඉසෙඩ් වේලාව ලෙසද හැඳින්වෙන බව සලකන්න .)
  • ඒ වෙනුවට ඔබ දේශීය කාල අගයක් භාවිතා කරමින් කාලයක් පවත්වා ගැනීමට තෝරා ගන්නේ නම්, යූටීසී වෙතින් මෙම නිශ්චිත වේලාව සඳහා දේශීය වේලාව ඕෆ්සෙට් ඇතුළත් කරන්න (මෙම ඕෆ්සෙට් වර්ෂය පුරා වෙනස් විය හැකිය), කාලරාමුව පසුව නිසැකවම අර්ථ නිරූපණය කළ හැකිය.
  • සමහර අවස්ථාවල දී, ඔබ ගබඩා කිරීම සඳහා අවශ්ය විය හැක දෙකම මෙම UTC කාලය සහ ඒ සමාන දේශීය කාලය. බොහෝ විට මෙය වෙනම ක්ෂේත්‍ර දෙකකින් සිදු කරයි, නමුත් සමහර වේදිකා datetimeoffsetදෙකම තනි ක්ෂේත්‍රයක ගබඩා කළ හැකි වර්ගයකට සහය දක්වයි .
  • සංඛ්‍යාත්මක අගයක් ලෙස කාලරාමු ගබඩා කිරීමේදී, යුනික්ස් වේලාව භාවිතා කරන්න - එය එතැන් සිට ඇති මුළු තත්පර ගණන 1970-01-01T00:00:00Z(පිම්ම තත්පර හැර). ඔබට වැඩි නිරවද්‍යතාවයක් අවශ්‍ය නම් ඒ වෙනුවට මිලි තත්පර භාවිතා කරන්න. මෙම අගය සෑම විටම කාල කලාප වෙනස් කිරීමකින් තොරව UTC මත පදනම් විය යුතුය.
  • ඔබට පසුව කාලරාමුව වෙනස් කිරීමට අවශ්‍ය නම්, මුල් කාල කලාප හැඳුනුම්පත ඇතුළත් කරන්න, එවිට ඕෆ්සෙට් පටිගත කළ මුල් අගයෙන් වෙනස් වී ඇත්දැයි ඔබට තීරණය කළ හැකිය.
  • අනාගත සිදුවීම් උපලේඛනගත කිරීමේදී, සාමාන්‍යයෙන් UTC වෙනුවට දේශීය වේලාව වඩාත් කැමති වේ, මන්ද ඕෆ්සෙට් වෙනස් වීම සාමාන්‍ය දෙයකි. පිළිතුර සහ බ්ලොග් සටහන බලන්න .
  • උපන් දින සහ සංවත්සර වැනි සම්පූර්ණ දිනයන් ගබඩා කිරීමේදී UTC හෝ වෙනත් කාල කලාපයක් බවට පරිවර්තනය නොකරන්න.
    • හැකි විට, දවසේ වේලාවක් ඇතුළත් නොවන දිනය පමණක් දත්ත වර්ගයක ගබඩා කරන්න.
    • එවැනි වර්ගයක් නොමැති නම්, අගය අර්ථ නිරූපණය කිරීමේදී සෑම විටම දවසේ වේලාව නොසලකා හැරීමට වග බලා ගන්න. දවසේ වේලාව නොසලකා හරින බවට ඔබට සහතික විය නොහැකි නම්, එදින වඩාත් ආරක්ෂිත නියෝජිත වේලාවක් ලෙස මධ්‍යම රාත්‍රී 00:00 ට වඩා දහවල් 12:00 තෝරන්න.
  • කාල කලාප ඕෆ්සෙට් සෑම විටම පැය ගණනක් නොවන බව මතක තබා ගන්න (නිදසුනක් ලෙස, ඉන්දියානු සම්මත වේලාව UTC + 05: 30, සහ නේපාලය UTC + 05: 45 භාවිතා කරයි).
  • ජාවා භාවිතා කරන්නේ නම්, ජාවා 8 සඳහා java.time සහ පසුව භාවිතා කරන්න.
  • .NET භාවිතා කරන්නේ නම් , නෝඩා වේලාව භාවිතා කිරීම ගැන සලකා බලන්න .
  • නෝඩා වේලාව නොමැතිව .NET භාවිතා කරන්නේ නම්, DateTimeOffsetඑය බොහෝ විට වඩා හොඳ තේරීමක් ලෙස සලකන්න DateTime.
  • Perl බසට ලං භාවිතා කරන්නේ නම්, භාවිතා දිනයවේලාව .
  • Python භාවිතා කරන්නේ නම්, pytz හෝ dateutil භාවිතා කරන්න .
  • JavaScript භාවිතා කරන්නේ නම්, moment-timezone දිගුව සමඟ moment.js භාවිතා කරන්න .
  • PHP> 5.2 භාවිතා කරන්නේ නම් DateTime, සපයන ලද ස්වදේශීය කාල කලාප පරිවර්තනයන් සහ DateTimeZoneපන්ති භාවිතා කරන්න. භාවිතා කිරීමේදී ප්‍රවේශම් වන්න DateTimeZone::listAbbreviations()- පිළිතුර බලන්න . PHP යාවත්කාලීන ඕල්සන් දත්ත සමඟ තබා ගැනීමට, වරින් වර කාල කලාපීය PECL පැකේජය ස්ථාපනය කරන්න ; පිළිතුර බලන්න .
  • C ++ භාවිතා කරන්නේ නම්, IANA කාල කලාප දත්ත ගබඩාව නිසියාකාරව ක්‍රියාත්මක කරන පුස්තකාලයක් භාවිතා කිරීමට වග බලා ගන්න . මේවාට cctz , ICU සහ හොවාර්ඩ් හිනන්ට්ගේ "tz" පුස්තකාලය ඇතුළත් වේ.
    • කාල කලාප පරිවර්තනය සඳහා බූස්ට් භාවිතා නොකරන්න . එහි API සම්මත IANA (aka "zoneinfo") හඳුනාගැනීම් සඳහා සහය දක්වන බව කියා සිටියද , එය සෑම කලාපයකම සිදුවිය හැකි වෙනස්කම්වල පොහොසත් ඉතිහාසය සලකා බැලීමෙන් තොරව ඒවා පොසික්ස් විලාසිතාවේ දත්ත වලට රළු ලෙස සිතියම් ගත කරයි. (එසේම, ගොනුව නඩත්තු නොකෙරේ.)
  • රස්ට් භාවිතා කරන්නේ නම්, ක්‍රෝනෝ භාවිතා කරන්න .
  • බොහෝ ව්‍යාපාරික නීති UTC හෝ GMT වෙනුවට සිවිල් කාලය භාවිතා කරයි. එබැවින්, යෙදුම් තර්කනය යෙදීමට පෙර UTC කාලරාමු දේශීය කාල කලාපයක් බවට පරිවර්තනය කිරීමට සැලසුම් කරන්න.
  • කාල කලාප සහ ඕෆ්සෙට් සවි කර නොමැති අතර ඒවා වෙනස් විය හැකි බව මතක තබා ගන්න. නිදසුනක් වශයෙන්, ically තිහාසිකව එක්සත් ජනපදය සහ එක්සත් රාජධානිය එකම දිනයන් 'ඉදිරියට ඉදිරියට' සහ 'ආපසු වැටීමට' භාවිතා කළහ. කෙසේ වෙතත්, 2007 දී එක්සත් ජනපදය ඔරලෝසු වෙනස් වන දිනයන් වෙනස් කළේය. මෙයින් දැන් අදහස් වන්නේ වසරේ සති 48 සඳහා ලන්ඩන් වේලාව සහ නිව්යෝර්ක් කාලය අතර වෙනස පැය 5 ක් වන අතර සති 4 ක් සඳහා (වසන්තයේ 3, සරත් 1 තුවේ 1) එය පැය 4 කි. බහුවිධ කලාප සම්බන්ධ ඕනෑම ගණනය කිරීම් වලදී මෙවැනි අයිතම ගැන සැලකිලිමත් වන්න.
  • නිවැරදිව ලබා ගැනීම සඳහා ඔබ ගබඩා කළ යුතු මූලද්‍රව්‍ය (කාලරාමුව, කාල කලාප ඕෆ්සෙට් සහ කාල කලාපයේ නම) කුමන වේලාව (සත්‍ය සිදුවීම් කාලය, විකාශන කාලය, සාපේක්ෂ කාලය, historical තිහාසික කාලය, පුනරාවර්තන කාලය) සලකා බලන්න - මෙම පිළිතුර .
  • ඔබගේ මෙහෙයුම් පද්ධතිය, දත්ත සමුදාය සහ යෙදුම් tzdata ලිපිගොනු තමන් සහ ලෝකයේ සෙසු රටවල් අතර සමමුහුර්තව තබා ගන්න.
  • සේවාදායකයන් මත, දේශීය කාල කලාපයකට වඩා දෘඩාංග ඔරලෝසු සහ මෙහෙයුම් ඔරලෝසු UTC ලෙස සකසන්න.
  • කුමක් පෙර වෙඩි ලක්ෂ්යයෙන් සර්වර්-සයිඩ් කේතය, වෙබ් අඩවි ඇතුලු යුතු නැහැ සේවාදායකය දේශීය කාල කලාපය විශේෂයෙන් කිසිම දෙයක් කිරීමට බලාපොරොත්තු වෙනවා. පිළිතුර බලන්න .
  • වින්‍යාස ගොනු සැකසුම් හෝ පෙරනිමි හරහා ගෝලීයව නොව, ඔබේ යෙදුම් කේතයේ එක් එක් සිද්ධිය අනුව කාල කලාප සමඟ වැඩ කිරීමට කැමති වන්න.
  • සියලුම සේවාදායකයන්හි NTP සේවාවන් භාවිතා කරන්න .
  • FAT32 භාවිතා කරන්නේ නම් , කාලරාමු ගබඩා කර ඇත්තේ UTC නොව දේශීය වේලාවේ බව මතක තබා ගන්න.
  • පුනරාවර්තන සිදුවීම් සමඟ කටයුතු කරන විට (සතිපතා රූපවාහිනී වැඩසටහන, උදාහරණයක් ලෙස), ඩීඑස්ටී සමඟ කාලය වෙනස් වන අතර කාල කලාප හරහා වෙනස් වන බව මතක තබා ගන්න.
  • සෑම විටම දිනය-කාලීන අගයන් පහළ-මායිම් ඇතුළත්, ඉහළ මායිම් සහිත ( >=, <) ලෙස විමසන්න.

එපා:

  • වැනි America/New_York"කාල කලාප ඕෆ්සෙට්" වැනි "කාල කලාපයක්" පටලවා නොගන්න -05:00. ඒවා වෙනස් කරුණු දෙකකි. කාල කලාප ටැගය විකිය බලන්න .
  • Dateපැරණි වෙබ් බ්‍රව්සර්වල දිනය සහ වේලාව ගණනය කිරීම සඳහා ජාවාස්ක්‍රිප්ට් වස්තුව භාවිතා නොකරන්න , ECMAScript 5.1 සහ ඊට පහළින් සැලසුම් දෝෂයක් ඇති බැවින් දිවා ආලෝකය ඉතිරි කිරීමේ කාලය වැරදි ලෙස භාවිතා කළ හැකිය. (මෙය ECMAScript 6/2015 හි සවි කර ඇත).
  • සේවාදායකයාගේ ඔරලෝසුව කිසි විටෙකත් විශ්වාස නොකරන්න. එය බොහෝ විට වැරදිය.
  • "සෑම විටම සෑම තැනකම UTC භාවිතා කරන්න" යැයි මිනිසුන්ට නොකියන්න. මෙම පුළුල් උපදෙස් මෙම ලේඛනයේ කලින් විස්තර කර ඇති වලංගු අවස්ථා කිහිපයක් පිළිබඳ කෙටි දැක්මක් ඇත. ඒ වෙනුවට, ඔබ සමඟ වැඩ කරන දත්ත සඳහා සුදුසු කාල සටහන භාවිතා කරන්න. ( කාලරාමුවලට UTC භාවිතා කළ හැකි නමුත් අනාගත කාලසටහන් සහ දිනය පමණක් වටිනාකම් නොතිබිය යුතුය.)

පරීක්ෂා කිරීම:

  • පරීක්‍ෂා කිරීමේදී, බටහිර, නැගෙනහිර, උතුරු සහ දකුණු අර්ධගෝලවල (ඇත්ත වශයෙන්ම ලෝකයේ සෑම කාර්තුවකම කලාප 4 ක්), ඩීඑස්ටී දෙකම ප්‍රගතියේ පවතින අතර (8 ලබා දෙයි) සහ එසේ කරන රටක් පරීක්ෂා කිරීමට වග බලා ගන්න. DST භාවිතා නොකරන්න (සියලුම කලාප ආවරණය කිරීම සඳහා තවත් 4 ක්, මුළු ගණන 12 ක් බවට පත් කරයි).
  • ඩීඑස්ටී හි පරීක්ෂණ සංක්‍රාන්තිය, එනම් ඔබ දැනට ගිම්හාන කාලයේ සිටින විට ශීත from තුවේ සිට කාල අගයක් තෝරන්න.
  • ඩීඑස්ටී සමඟ UTC + 12 වන කාල කලාපයක් වැනි පරීක්ෂණ මායිම් අවස්ථා, ගිම්හානයේදී දේශීය වේලාව UTC + 13 බවට පත් කිරීම සහ ශීත U තුවේ දී UTC + 13 ඇති ස්ථාන පවා
  • සියලුම තෙවන පාර්ශවීය පුස්තකාල සහ යෙදුම් පරීක්ෂා කර ඒවා කාල කලාප දත්ත නිවැරදිව හැසිරවීමට වග බලා ගන්න.
  • අවම වශයෙන් පැය භාගයක කාල කලාප පරීක්ෂා කරන්න.

යොමුව:

වෙනත්:

  • ඩීඑස්ටී ලෙස පිළිකුල් කිරීම අවසන් කිරීමට ඔබේ නියෝජිතයාට බලපෑම් කරන්න. අපට සැමවිටම බලාපොරොත්තු විය හැකිය ...
  • පෘථිවි සම්මත වේලාව සඳහා ලොබිය

31
GMT භාවිතා කිරීම ඇත්ත වශයෙන්ම ගැටලුව විසඳන්නේ නැත , අයදුම් කිරීමට සුදුසු ඩෙල්ටාව කුමක්දැයි ඔබ තවමත් සොයාගත යුතුය, සියලු සංකීර්ණතා පවතින්නේ මෙහිදීය. විවිධ කලාපවල පරිශීලකයින් විසින් භාවිතා කරන පද්ධතිවල (විවිධ දිවා ආලෝකය ඉතිරි කිරීමේ ස්විච් කාලසටහන් සහිතව) හෝ historical තිහාසික / අනාගත දත්ත පෙන්වන පද්ධතිවල තීරණය කිරීම සඳහා ඩෙල්ටාව සංකීර්ණ විය හැකිය.
ckarras

10
සියලුම දේශීය යෙදුම වර්තමාන දේශීය වේලාව ප්‍රදර්ශනය කිරීම සඳහා අවශ්‍ය නම් එය සත්‍යයකි. නමුත් අපට උදාහරණයක් ලෙස ඕස්ට්‍රේලියාවේ 2006 අප්‍රේල් 2 වන දින කැනඩාවේ ගනුදෙනුවක් සඳහා දිනය / වේලාව ප්‍රදර්ශනය කළ යුතු සේවාදායකයක් තිබේ නම් (කැනඩාවේ දිවා සුරැකීමේ මාරුවීමේ නීති වෙනස් කිරීමට පෙර අවසන් වසර මෙය විය) - ඔබට OS ඇමතුමක් තිබේද? එය ඩේටයිම් ("2006/04/02 14: 35Z") කළ හැකිය. ටොලොකල් ටයිම් (). ඩේලයිට් සේවිං රූල්ස් ("කැනඩාව", 2006) සමඟ?
ckarras

22
ඔව්, වින්ඩෝස් හි එවැනි OS ඇමතුමක් තිබේ - SystemTimeToTzSpecificLocation. msdn.microsoft.com/en-us/library/ms724949(VS.85).aspx
මයිකල් මැඩ්සන්

7
සමහර විට ඔබ නොපසුබට නම් ඔබට පුළුවන්.
පීටර් අජ්තායි

16
අනාගත දිනයන් (හෙට පවා) UTC බවට පරිවර්තනය කිරීම මතක තබා ගන්න ඔබට සෑම විටම යමක් අහිමි වේ. උදාහරණයක් ලෙස, එම පරිවර්තනය සිදු කිරීම සඳහා ඔබ දන්නා යම් ඕෆ්සෙට් එකක් භාවිතා කළ නමුත් අනාගතය දිනය වන බැවින්, එම නීති රීති සකස් කරන කණ්ඩායම එම නීති වෙනස් කිරීමට සෑම විටම අවස්ථාවක් තිබේ. එසේම, අනාගත දිනයන් යූටීසී බවට පරිවර්තනය කිරීම පාහේ කළ නොහැක්කකි, මන්ද එම වර්ෂය දක්වා දිවා කාලයේ ඉතුරුම් කාලය නොදන්නා හෙයිනි (සමහර රටවල් සෑම වසරකම දින නියම කරන්නේ මිස අවුරුදු 10+ කට පෙර හෝ කිසියම් නියමයන් මත පදනම්ව නොවේ).
eselk

320

ඉහත පිළිතුරු වලට මට එකතු කළ හැක්කේ කුමක්දැයි මට විශ්වාස නැත, නමුත් මෙන්න මගෙන් කරුණු කිහිපයක්:

වාර ගණන

ඔබ සලකා බැලිය යුතු වෙනස් අවස්ථා හතරක් ඇත:

  1. සිදුවීම් කාලය: උදා: ජාත්‍යන්තර ක්‍රීඩා ඉසව්වක් සිදුවන කාලය හෝ කිරීටය / මරණය / යනාදිය. මෙය රඳා පවතින්නේ සිදුවීමේ කාල කලාපය මත මිස නරඹන්නාට නොවේ.
  2. රූපවාහිනී වේලාව: උදා: විශේෂිත රූපවාහිනී වැඩසටහනක් ලොව පුරා දේශීය වේලාවෙන් රාත්‍රී 9 ට විකාශය වේ. ඔබේ වෙබ් අඩවියේ ප්‍රති American ල (ඇමරිකානු අයිඩල් යැයි කියනු ලැබේ) ප්‍රකාශයට පත් කිරීම ගැන සිතන විට වැදගත් වේ
  3. සාපේක්ෂ කාලය: උදා: මෙම ප්‍රශ්නයට පැය 21 කින් විවෘත වරප්‍රසාදයක් ඇත. මෙය ප්‍රදර්ශනය කිරීම පහසුය
  4. පුනරාවර්තන වේලාව: උදා: ඩීඑස්ටී වෙනස් වන විට පවා සෑම සඳුදා දිනකම රාත්‍රී 9 ට රූපවාහිනී වැඩසටහනක් ඇත.

/ තිහාසික / විකල්ප කාලය ද ඇත. මේවා නියමිත වේලාවට නැවත සිතියම් ගත නොකිරීම නිසා මේවා කරදරකාරී වේ. උදා: ජූලියන් දිනයන්, සෙනසුරු ග්‍රහයාගේ චන්ද්‍ර දින දර්ශනයට අනුව දිනයන්, ක්ලින්ගන් දින දර්ශනය.

UTC හි ආරම්භක / අවසන් කාලරාමු ගබඩා කිරීම හොඳින් ක්‍රියාත්මක වේ. 1 සඳහා, ඔබට සිදුවීම් කාල කලාපයේ නමක් + සිදුවීම සමඟ ගබඩා කර ඇති ඕෆ්සෙට් අවශ්‍ය වේ. 2 සඳහා, ඔබට එක් එක් කලාපය සමඟ ගබඩා කර ඇති දේශීය කාල හඳුනාගැනීමක් සහ සෑම නරඹන්නෙකු සඳහාම ගබඩා කර ඇති දේශීය කාල කලාප නාමයක් + ඕෆ්සෙට් එකක් අවශ්‍ය වේ (ඔබ අර්බුදයක සිටී නම් මෙය IP වෙතින් ව්‍යුත්පන්න කළ හැකිය). 3 ක් සඳහා, යූටීසී තත්පර වලින් ගබඩා කරන්න, කාල කලාප අවශ්‍ය නොවේ. 4 යනු ගෝලීය හෝ දේශීය සිදුවීමක්ද යන්න මත පදනම්ව 1 හෝ 2 හි විශේෂ අවස්ථාවකි, නමුත් ඔබ විසින් නිර්මාණය කරන ලද කාලරාමුවක ගබඩා කිරීමද අවශ්‍ය වන අතර එමඟින් මෙම සිදුවීම නිර්මාණය කිරීමට පෙර හෝ පසුව කාල කලාප අර්ථ දැක්වීමක් වෙනස් වී ඇත්දැයි ඔබට කිව හැකිය. ඔබට histor තිහාසික දත්ත පෙන්වීමට අවශ්‍ය නම් මෙය අවශ්‍ය වේ.

වේලාවන් ගබඩා කිරීම

  • UTC හි සෑම විටම කාලය ගබඩා කරන්න
  • ප්‍රදර්ශනය වන දේශීය වේලාවට පරිවර්තනය කරන්න (දත්ත දෙස බලන පරිශීලකයා විසින් දේශීය අර්ථ දැක්වීම)
  • කාල කලාපයක් ගබඩා කිරීමේදී ඔබට නම, කාලරාමුව සහ ඕෆ්සෙට් අවශ්‍ය වේ. රජයන් සමහර විට ඔවුන්ගේ කාල කලාපවල අර්ථයන් වෙනස් කරන නිසා මෙය අවශ්‍ය වේ (උදා: එක්සත් ජනපද රජය ඩීඑස්ටී දින වෙනස් කර ඇත), සහ ඔබේ යෙදුමට කාරණා මනාව හැසිරවිය යුතුය ... උදා: ඩීඑස්ටී රීති වලට පෙර සහ පසු යන දෙකම නැතිවූ කථාංග පෙන්වන විට නිශ්චිත කාලරාමුව වෙනස් විය.

ඕෆ්සෙට් සහ නම්

ඉහත උදාහරණ වනුයේ:

පාපන්දු ලෝක කුසලාන අවසන් තරගය දකුණු අප්‍රිකාවේ (UTC + 2 - SAST) 2010 ජූලි 11 වන දින 19:00 UTC හිදී සිදුවිය.

මෙම තොරතුරු සමග, අපි ඓතිහාසිකව 2010 WCS අවසන් පවා දකුණු අප්රිකානු වේලා කලාපය අර්ථ දැක්වීම වෙනස් කරනවා නම් සිදු වන විට නිශ්චිත කාල තීරණය කළ හැකි හා ඔවුන් කල දත්ත-ගබඩා විමසුම අවස්ථාවක ඔවුන්ගේ දේශීය වේලා කලාපය ප්රේක්ෂකයන් වෙත ප්රදර්ශනය කළ හැක.

පද්ධති වේලාව

ඔබේ මෙහෙයුම් පද්ධතිය, දත්ත සමුදාය සහ යෙදුම් tzdata ලිපිගොනු එකිනෙක හා ලෝකයේ සෙසු රටවල් සමඟ සමමුහුර්තව තබා ගත යුතු අතර, ඔබ යාවත්කාලීන කරන විට පුළුල් ලෙස පරීක්ෂා කරන්න. ඔබ යැපෙන තෙවන පාර්ශවීය යෙදුමක් TZ වෙනසක් නිවැරදිව හසුරුවා නැති බව අසා නැත.

දෘඩාංග ඔරලෝසු UTC ලෙස සකසා ඇති බවට වග බලා ගන්න, ඔබ ලොව පුරා සේවාදායකයන් ධාවනය කරන්නේ නම්, ඔවුන්ගේ මෙහෙයුම් පද්ධති UTC භාවිතා කිරීමට වින්‍යාස කර ඇති බවට වග බලා ගන්න. ඔබට විවිධ කාල කලාපවල සේවාදායකයන්ගෙන් පැයකට භ්‍රමණය වන අපචේ ලොග් ගොනු පිටපත් කිරීමට අවශ්‍ය වූ විට මෙය පැහැදිලි වේ. ගොනු නාමයෙන් ඒවා වර්ග කිරීම ක්‍රියාත්මක වන්නේ සියලුම ලිපිගොනු එකම කාල කලාපයකින් නම් කර ඇත්නම් පමණි. එයින් අදහස් වන්නේ ඔබ එක් පෙට්ටියක සිට තවත් පෙට්ටියකට මාරු වන විට ඔබේ හිසෙහි දින ගණිතය කළ යුතු නැති බවත් කාලරාමු සංසන්දනය කළ යුතු බවත් ය.

එසේම, සියලුම පෙට්ටිවල ntpd ධාවනය කරන්න.

සේවාදායකයින්

ග්‍රාහක යන්ත්‍රයකින් ඔබට ලැබෙන කාලරාමුව වලංගු යැයි කිසි විටෙකත් විශ්වාස නොකරන්න. උදාහරණයක් ලෙස, දිනය: HTTP ශීර්ෂයන් හෝ javascript Date.getTime()ඇමතුමක්. පාරාන්ධ අනන්‍යතා ලෙස භාවිතා කරන විට හෝ එකම සේවාදායකයෙකුගේ එක් සැසියකදී දින ගණිතය කරන විට මේවා හොඳයි, නමුත් ඔබ සේවාදායකයේ ඇති යමක් සමඟ මෙම අගයන් හරස් යොමු කිරීමට උත්සාහ නොකරන්න. ඔබේ සේවාදායකයින් එන්ටීපී ධාවනය නොකරන අතර ඔවුන්ගේ BIOS ඔරලෝසුව සඳහා වැඩ කරන බැටරියක් තිබිය යුතු නොවේ.

ට්‍රිවියා

අවසාන වශයෙන්, ආණ්ඩු සමහර විට ඉතා අමුතු දේවල් කරනු ඇත:

1909-05-01 සිට 1937-06-30 දක්වා නීතියට අනුව නෙදර්ලන්තයේ සම්මත කාලය හරියටම මිනිත්තු 19 යි තත්පර 32.13 කි. මෙම කාල කලාපය හරියටම HH: MM ආකෘතියෙන් නිරූපණය කළ නොහැක.

හරි, මම හිතන්නේ මම ඉවරයි.


6
මෙම පිළිතුරට වැදගත් කරුණු කිහිපයක් තිබේ, මට විශේෂයෙන් මෙම කොටස පෙන්වා දීමට අවශ්‍ය විය "පුනරාවර්තන වේලාව: උදා: සෑම සඳුදා දිනකම රාත්‍රී 9 ට රූපවාහිනී වැඩසටහනක් ඇත, ඩීඑස්ටී වෙනස් වන විට පවා" ඩීබී හි යූටීසී හි වේලාවන් ගබඩා කර ප්‍රදර්ශනය සඳහා පරිවර්තනය කිරීම හැසිරවීමට උපකාරී වේ කාල කලාප සමඟ කටයුතු කිරීමේ උපායශීලී අංශ රාශියක්. කෙසේ වෙතත්, ඩීඑස්ටී බාධක තරණය කරන "පුනරාවර්තන සිදුවීම්" හැසිරවීම වඩාත් දැඩි වේ.
ජැරඩ් හේල්ස්

46
Trivia සඳහා +1. අන්තර්ගතය සිත්ගන්නාසුලු ලෙස තබා ගැනීම මෙම කාර්යය වඩාත් විනෝදජනක වන අතර එමඟින් produc ලදායිතාව ඉහළ නැංවිය හැකිය :)
ක්‍රිස්

4
මෙම පිළිතුරේ හොඳ දේවල් ගොඩක්, නමුත් ගැටළු කිහිපයක්. 1) බොහෝ කාල කලාප කෙටි යෙදුම් අපැහැදිලි ය. මෙහි බලන්න 2) සෑම විටම ඔබට UTC හි ගබඩා කිරීමට අවශ්‍ය නොවේ . බොහෝ විට - ඔව්, නමුත් සන්දර්භය වැදගත් වේ. ඔබේ කොන්දේසිවලට අනුව, රූපවාහිනී කාලය UTC හි ගබඩා නොවේ. එසේම, සමහර විට දේශීය කාලය ගබඩා නොකිරීමට එය නීති විරෝධී හෝ ප්‍රතිපත්තියට පටහැනි වේ - DateTimeOffset(හෝ ඊට සමාන) වැනි දේවල් ප්‍රයෝජනවත් වන්නේ එහිදීය . නැතිනම් හොඳට ලියන්න.
මැට් ජොන්සන්-පින්ට්

1
එබැවින්, ජෝඩා පුස්තකාලය මේ වන විට රැකියාව සඳහා ඇති හොඳම මෙවලම බව සියලු දෙනා එකඟ වෙති. කෙසේ වෙතත්, නවතම කාල කලාප තොරතුරු සමඟ යාවත්කාලීනව තබා ගැනීම සඳහා මෙම ලිපියට ( joda.org/joda-time/tz_update.html ) අනුව අපි ජෝඩා භාජන ගොනුව යාවත්කාලීන කිරීම (නැවත ගොඩනැඟීම) කළ යුතුය . IANA වෙබ් අඩවියෙන් ( iana.org/time-zones ) නවතම කාල කලාප දත්ත බාගත කර ජෝඩා පුස්තකාලය නැවත ගොඩනැඟීමේ සම්මත ක්‍රමයක් තිබේද? වෙනත් වචන වලින් කිවහොත්, මෙම ක්‍රියාවලිය අතින් සිදු කරනවාට වඩා ස්වයංක්‍රීය කිරීමට හැකිද?
saravana_pc

2
නෙදර්ලන්ත වැදගත්කම නීත්‍යානුකූලයි. ietf.org/rfc/rfc3339.txt කොටස 5.8. බාගෙට හිතාගත්තා කවුරුහරි අපේ කකුල අදිනවා කියලා.
රෆින්

89

මෙය වැදගත් හා පුදුම සහගත කාරණයක්. සත්යය නම්, කාලය දිගටම පවත්වා ගැනීම සඳහා සම්පූර්ණයෙන්ම තෘප්තිමත් ප්රමිතියක් නොමැති බවයි. උදාහරණයක් ලෙස, SQL ප්‍රමිතිය සහ ISO ආකෘතිය (ISO 8601) පැහැදිලිවම ප්‍රමාණවත් නොවේ.

සංකල්පීය දෘෂ්ටි කෝණයෙන් බලන කල, යමෙකු සාමාන්‍යයෙන් කාල-දින දත්ත වර්ග දෙකක් සමඟ කටයුතු කරන අතර ඒවා වෙන්කර හඳුනා ගැනීම පහසුය (ඉහත ප්‍රමිතීන් එසේ නොවේ): “ භෞතික කාලය ” සහ “ සිවිල් කාලය ”.

“භෞතික” ක්ෂණික ක්ෂණික විද්‍යාව යනු භෞතික විද්‍යාව සමඟ ගනුදෙනු කරන අඛණ්ඩ විශ්වීය කාලරාමුවෙහි ලක්ෂ්‍යයකි (සාපේක්ෂතාවාදය නොසලකා හැරීම). මෙම සංකල්පය යූටීසී හි ප්‍රමාණවත් ලෙස කේතනය කළ හැකිය, උදාහරණයක් ලෙස (ඔබට අධික තත්පර නොසලකා හැරිය හැකි නම්).

“සිවිල්” වේලාව යනු සිවිල් සම්මතයන් අනුගමනය කරන දිවා කාලයේ පිරිවිතරයකි: මෙහි කාල ලක්ෂ්‍යයක් දිවා කාල ක්ෂේත්‍ර (Y, M, D, H, MM, S, FS) සහ TZ (කාල කලාප පිරිවිතර) මගින් සම්පුර්ණයෙන්ම නියම කරනු ලැබේ. (ඇත්ත වශයෙන්ම "දින දර්ශනයක්" ද වේ; නමුත් අපි සාකච්ඡාව ග්‍රෙගෝරියානු දින දර්ශනයට පමණක් සීමා කරමු යැයි සිතමු). කාල කලාපයක් සහ දින දර්ශනයක් ඒකාබද්ධව (ප්‍රතිපත්තිමය වශයෙන්) එක් නිරූපණයක සිට තවත් නිරූපණයකට සිතියම් ගත කිරීමට ඉඩ දෙයි. නමුත් සිවිල් හා භෞතික කාල ක්ෂණිකයන් මූලික වශයෙන් විවිධ වර්ගවල විශාලත්වයන් වන අතර ඒවා සංකල්පමය වශයෙන් වෙන් කොට වෙනස් ලෙස සැලකිය යුතුය (ප්‍රතිසමයක්: බයිට් වල අරා සහ අක්ෂර නූල්).

ගැටළුව අවුල් සහගත වන්නේ අප මෙවැනි සිදුවීම් එකිනෙකට වෙනස් ලෙස කථා කරන නිසාත්, සිවිල් කාලය දේශපාලන වෙනස්කම් වලට භාජනය වන නිසාත් ය. ගැටලුව (සහ මෙම සංකල්ප වෙන්කර හඳුනා ගැනීමේ අවශ්‍යතාවය) අනාගතයේ සිදුවීම් සඳහා වඩාත් පැහැදිලි වේ. උදාහරණය ( මෙහි මගේ සාකච්ඡාවෙන් ලබා ගත්) .

ජෝන් සිය දින දර්ශනයේ දිවා කාලයේ යම් සිදුවීමක් සඳහා 2019-Jul-27, 10:30:00TZ = මතක් කිරීමක් සටහන් කරයි Chile/Santiago(එය GMT-4 ඕෆ්සෙට් කර ඇත, එබැවින් එය UTC ට අනුරූප වේ 2019-Jul-27 14:30:00). නමුත් අනාගතයේ යම් දවසක, TZ ඕෆ්සෙට් එක GMT-5 ලෙස වෙනස් කිරීමට රට තීරණය කරයි.

දැන්, දවස පැමිණි විට ... එම මතක් කිරීම ක්‍රියාත්මක විය යුතුද?

අ) 2019-Jul-27 10:30:00 Chile/Santiago = UTC time 2019-Jul-27 15:30:00?

හෝ

ආ) 2019-Jul-27 9:30:00 Chile/Santiago = UTC time 2019-Jul-27 14:30:00?

“කරුණාකර මාව නාද කරන්න” යනුවෙන් දින දර්ශනයට ජෝන් පැවසූ විට සංකල්පමය වශයෙන් අදහස් කළේ කුමක්දැයි කිසිවෙකු දන්නේ නැත්නම් නිවැරදි පිළිතුරක් නැත 2019-Jul-27, 10:30:00 TZ=Chile/Santiago.

ඔහු අදහස් කළේ "සිවිල් දිනය-වේලාව" ("මගේ නගරයේ ඔරලෝසු 10:30 ට කියන විට")? එවැනි අවස්ථාවක, A) නිවැරදි පිළිතුරයි.

නැතහොත් ඔහු අදහස් කළේ අපගේ විශ්වයේ අඛණ්ඩ කාල රේඛාවේ ලක්ෂ්‍යයක් වන “භෞතික ක්ෂණික ක්ෂණික මොහොතක්”, “ඊළඟ සූර්යග්‍රහණය සිදු වූ විට” කියාද? එවැනි අවස්ථාවක, B පිළිතුර නිවැරදි ය.

දිනය / වේලාව ඒපීඅයි කිහිපයක් මෙම වෙනස නිවැරදිව ලබා ගනී: ඒවා අතර, ඊළඟ (තෙවන!) ජාවා ඩේටයිම් ඒපීඅයි (ජේඑස්ආර් 310) හි පදනම වන ජෝඩාටයිම් .


1
ඒපීඅයි වල මා දැක නැති තවත් කරුණක් නම්, කාලය සහ කාල කලාපය ලබා දී ඇති විට පවා, උදා: “13: 00: 00EDT” සඳහා අවම වශයෙන් පිළිගත හැකි අර්ථ දෙකක්වත් තිබේ. එය ප්‍රාදේශීය වේලාවෙන් දහවල් 1 ට සිදුවී ඇති බව දන්නා, නැගෙනහිර දිවා ආලෝකය වේලාව යැයි විශ්වාස කළ දෙයක් හෝ නැගෙනහිර වේලාව 13:00 ට පහර දුන් මොහොතේ සිදුවී ඇති බව දන්නා දෙයක් වෙත යොමු විය හැකිය. නැගෙනහිර දිවා ආලෝකය නිරීක්ෂණය කරන ස්ථානයක සිදුවී ඇත. යමෙකුට කාල කලාප තොරතුරු වැරදි විය හැකි බොහෝ කාලරාමු තිබේ නම් (උදා: ඩිජිටල් කැමරා ලිපිගොනු) ...
සුපර් කැට්

1
... ඒවා නිවැරදි දේශීය වේලාවක් හෝ ගෝලීය වේලාවක් පිළිබිඹු කරන්නේ දැයි දැන ගැනීම ඒවා නිවැරදි කරන්නේ කෙසේද යන්න තීරණය කිරීමේදී වැදගත් විය හැකිය.
සුපර් කැට්

3
පැහැදිලිවම ජොන්ට අවශ්‍ය වන්නේ ඒ) මිනිසුන් වැඩට යන්නේ 8: 30 ට, දැනට ඩීඑස්ටී හෝ කාල කලාපය කුමක් වුවත්. ඔවුන් ඩීඑස්ටී වෙත ගියහොත්, ඔවුන් 8:30 ට වැඩට යනු ඇත, ඔවුන් ඩීඑස්ටී වෙතින් පිටවන විට, ඔවුන් 8:30 ට වැඩට යනු ඇත. රට වෙනත් කාල කලාපයකට යාමට තීරණය කළහොත්, ඔවුන් උදේ 8: 30 ට වැඩට යනු ඇත
ගියන්ලූකා ගෙට්ටිනි

60

උත්සුකයන්ගේ වාස්තු විද්‍යාත්මක වෙන් කිරීම පැහැදිලි කරන්න - පරිශීලකයින් සමඟ කුමන තට්ටුවක් අන්තර්ක්‍රියා කරන්නේද යන්න හරියටම දැන ගැනීමට සහ කැනොනිකල් නිරූපණය (යූටීසී) සඳහා / වේලාව වෙනස් කළ යුතුය. යූටීසී නොවන දිනය-වේලාව ඉදිරිපත් කිරීමකි (පරිශීලකයින්ගේ දේශීය කාල කලාපය අනුගමනය කරයි), යූටීසී වේලාව ආදර්ශයකි (පසු-අන්ත හා මැද පෙළ සඳහා අද්විතීය වේ).

එසේම, ඔබේ සැබෑ ප්‍රේක්ෂකයින් මොනවාද, ඔබට සේවය කිරීමට අවශ්‍ය නැති දේ සහ ඔබ රේඛාව අඳින්නේ කොතැනද යන්න තීරණය කරන්න . ඔබට ඇත්ත වශයෙන්ම වැදගත් ගනුදෙනුකරුවන් සිටී නම් මිස විදේශීය දින දර්ශන ස්පර්ශ නොකරන්න, ඉන්පසු එම කලාපය සඳහා වෙනම පරිශීලක මුහුණැති සේවාදායකයන් සලකා බලන්න.

ඔබට පරිශීලකයාගේ ස්ථානය ලබා ගැනීමට සහ නඩත්තු කිරීමට හැකි නම්, ක්‍රමානුකූල දිනය-කාලීන පරිවර්තනය සඳහා ස්ථානය භාවිතා කරන්න (.NET සංස්කෘතිය හෝ SQL වගුවක් යැයි කියන්න) නමුත් ඔබේ පරිශීලකයින්ට දිනය-වේලාව ඉතා වැදගත් නම් අවසාන පරිශීලකයාට අතිච්ඡාදනයන් තෝරා ගැනීමට ක්‍රමයක් සපයන්න.

Historical තිහාසික විගණන බැඳීම් තිබේ නම් (ජෝ මීට වසර 2 කට පෙර සැප්තැම්බර් මාසයේදී බිල්පතක් ගෙවූ විට හරියටම පැවසීම වැනි) යූටීසී සහ ප්‍රාදේශීය වේලාවන් දෙකම වාර්තා තබා ගන්න (ඔබේ පරිවර්තන වගු කාලයාගේ ඇවෑමෙන් වෙනස් වේ).

ලිපිගොනු, වෙබ් සේවා වැනි තොග වශයෙන් ලැබෙන දත්ත සඳහා කාල යොමු කාල කලාපය නිර්වචනය කරන්න . ඊස්ට් කෝස්ට් සමාගමට CA හි දත්ත මධ්‍යස්ථානයක් ඇති බව පවසන්න - ඔබ එකක් හෝ වෙනත් එකක් උපකල්පනය කරනවා වෙනුවට ඔවුන් සම්මතයක් ලෙස භාවිතා කරන්නේ කුමක්දැයි විමසීමට හා දැන ගැනීමට අවශ්‍යය.

දිනය-වේලාවේ පෙළ නිරූපණයට ඇතුළත් කර ඇති කාල කලාප ඕෆ්සෙට් විශ්වාස නොකරන්න, ඒවා විග්‍රහ කර ඒවා අනුගමනය කිරීමට පිළිගන්න එපා. ඒ වෙනුවට සෑම විටම කාල කලාපය සහ / හෝ යොමු කලාපය පැහැදිලිව නිර්වචනය කළ යුතු යැයි ඉල්ලා සිටින්න . ඔබට පහසුවෙන් PST ඕෆ්සෙට් සමඟ කාලය ලබා ගත හැකි නමුත් කාලය ඇත්ත වශයෙන්ම EST බැවින් එය සේවාදායකයාගේ යොමු කාලය සහ වාර්තා PST හි ඇති සේවාදායකයකින් අපනයනය කර ඇත.


40

Ftp://elsie.nci.nih.gov/pub http://iana.org/time-zones/ වෙතින් ලබා ගත හැකි ඕල්සන් ටීඑස් දත්ත සමුදාය ගැන ඔබ දැනගත යුතුය . ලොව පුරා විවිධ රටවල ශීත summer තුව හා ගිම්හානය (සම්මත සහ දිවා ආලෝකය ඉතිරි කිරීම) අතර කාලය මාරු වන විට (සහ වේවා) බොහෝ විට අවසාන මොහොතේ සිදුවන වෙනස්කම් සමඟ කටයුතු කිරීම සඳහා එය වසරකට කිහිප වතාවක් යාවත්කාලීන වේ. 2009 දී අවසන් වරට නිකුත් කරන ලද්දේ 2009 දශකය; 2010 දී එය 2010n විය; 2011 දී එය 2011n; 2012 මැයි මස අවසානයේදී නිකුත් කිරීම 2012 සී. වෙනම ලේඛනාගාර දෙකක (tzcode20xxy.tar.gz සහ tzdata20xxy.tar.gz) දත්ත සහ සත්‍ය කාල කලාප දත්ත කළමනාකරණය කිරීම සඳහා කේත සමූහයක් ඇති බව සලකන්න. කේතය සහ දත්ත යන දෙකම පොදු වසමේ ඇත.

ඇමරිකාව / ලොස්_ඇන්ජලීස් (සහ එක්සත් ජනපද / පැසිෆික් වැනි සමාන පද) වැනි කාල කලාප නම් වල ප්‍රභවය මෙයයි.

ඔබට විවිධ කලාප පිළිබඳ තොරතුරු දැන ගැනීමට අවශ්‍ය නම් ඔබට ඕල්සන් දත්ත සමුදාය අවශ්‍ය වේ. අනෙක් අය උපදෙස් දී ඇති පරිදි, ඔබට ද දත්ත ස්ථාවර ආකෘතියකින් ගබඩා කිරීමට අවශ්‍යය - සාමාන්‍යයෙන් තෝරාගත් යූටීසී ය - දත්ත ජනනය කළ කාල කලාපයේ වාර්තාවක් සමඟ. එම අවස්ථාවේ UTC වෙතින් ඕෆ්සෙට් සහ කාල කලාපයේ නම අතර වෙනස හඳුනා ගැනීමට ඔබට අවශ්‍ය විය හැකිය; එය පසුව වෙනසක් කළ හැකිය. එසේම, එය දැනට 2010-03-28T23: 47: 00-07: 00 (එක්සත් ජනපද / පැසිෆික්) බව දැන ගැනීමෙන් 2010-11-15T12: 30 අගය අර්ථ නිරූපණය කිරීමට ඔබට උදව් විය හැකිය හෝ නොවිය හැකිය - එය PST හි නිශ්චිතව දක්වා ඇත ( PDT (පැසිෆික් දිවා ආලෝකය ඉතිරි කිරීමේ කාලය) වෙනුවට පැසිෆික් සම්මත වේලාව).

සම්මත C පුස්තකාල අතුරුමුහුණත් මේ ආකාරයේ දේවල් සඳහා භයානක ලෙස උපකාරී නොවේ.


ඕල්සන් දත්ත ගෙන ගොස් ඇත්තේ, ඒඩී ඕල්සන් ඉක්මනින් විශ්‍රාම යන නිසාත්, අර්ධ වශයෙන් ප්‍රකාශන හිමිකම උල්ලං ment නය කිරීම සම්බන්ධයෙන් නඩත්තු කරන්නන්ට එරෙහිව (දැන් සේවයෙන් පහ කරන ලද) නීතිමය නඩුවක් ඇති නිසාත් ය. කාල කලාප දත්ත සමුදාය දැන් කළමනාකරණය කර ඇත්තේ අන්තර්ජාල පැවරුම් අංක අධිකාරියේ IANA හි අනුග්‍රහය යටතේ වන අතර මුල් පිටුවේ 'කාල කලාප දත්ත ගබඩාවට' සබැඳියක් ඇත . සාකච්ඡා තැපැල් ලැයිස්තුව දැන් tz@iana.org; නිවේදන ලැයිස්තුව tz-announce@iana.org.


12
ඕල්සන් දත්ත ගබඩාවේ historical තිහාසික දත්ත ද අඩංගු වන අතර එමඟින් ඩීඑස්ටී හැසිරවීමට විශේෂයෙන් ප්‍රයෝජනවත් වේ. උදා: එක්සත් ජනපදයේ 2000 මාර්තු 31 ට අනුරූපී යූටීසී වටිනාකමක් ඩීඑස්ටී හි නොමැති බව එය දනී, නමුත් එක්සත් ජනපදයේ 2008 මාර්තු 31 ට අනුරූපී යූටීසී වටිනාකමක් තිබේ.
ජොෂ් කෙලී

3
යුනිකෝඩ් සම්මේලනය ඕල්සන් ටෝම් කලාප හැඳුනුම්පත් සහ වින්ඩෝස් කාල කලාප හැඳුනුම්පත් අතර සිතියම් ගත කිරීමක් පවත්වා ගෙන යයි: unicode.org/repos/cldr-tmp/trunk/diff/supplemental/…
ජොෂ් කෙලී

යුනිකෝඩ් කොන්සෝර්ටියම් පිටුව සඳහා යාවත්කාලීන කළ සබැඳිය: unicode.org/repos/cldr-tmp/trunk/diff/supplemental/…
Span

ඕල්සන් ලිපිගොනු විග්‍රහ කිරීම පිළිබඳ තොරතුරු සොයාගත හැක්කේ කොහෙන්ද? මට එය db වගුවකට සම්පාදනය කිරීමට අවශ්‍යයි, නමුත් ලිපිගොනු කියවිය යුත්තේ කෙසේදැයි
සිතාගත නොහැක

idgidireich: ප්‍රධාන තොරතුරු දත්ත සමඟ සොයාගත හැකි අතර එය තේරුම් ගැනීම පහසු නැත. ඒ සඳහා වන ප්‍රධාන ලියකියවිලි zic.8man පිටුවෙහි (හෝ zic.8.txt) ඇත. ඔබ අවශ්ය වනු ඇත tzcode2011i.tar.gzගොනුව වෙනුවට, හෝ මෙන්ම, එම tzdata2011i.tar.gzතොරතුරු ලබා ගැනීමට ගොනුව.
ජොනතන් ලෙෆ්ලර්

26

පොදුවේ ගත් කල, ගබඩා කර ඇති කාලරාමු වල දේශීය කාල ඕෆ්සෙට් (ඩීඑස්ටී ඕෆ්සෙට් ද ඇතුළුව) ඇතුළත් කරන්න : ඔබට පසුව කාලරාමුව එහි මුල් කාල කලාපයේ (සහ ඩීඑස්ටී සැකසුම) ප්‍රදර්ශනය කිරීමට අවශ්‍ය නම් යූටීසී පමණක් ප්‍රමාණවත් නොවේ.

ඕෆ්සෙට් සෑම විටම පැය ගණනක් නොවන බව මතක තබා ගන්න (උදා: ඉන්දියානු සම්මත වේලාව UTC + 05: 30).

නිදසුනක් ලෙස, සුදුසු ආකෘති යනු ටුපල් (යුනික්ස් වේලාව, මිනිත්තු වලින් ඕෆ්සෙට්) හෝ අයිඑස්ඕ 8601 ය .


5
දර්ශනය සඳහා, ඕෆ්සෙට් පරිපූර්ණයි. ඔබට වෙනස්කම් කිරීමට අවශ්‍ය නම්, ඕෆ්සෙට් තවමත් ප්‍රමාණවත් නොවේ. නව අගයට වෙනස් ඕෆ්සෙට් එකක් අවශ්‍ය විය හැකි බැවින් ඔබ කාල කලාපය ද දැන සිටිය යුතුය.
මැට් ජොන්සන්-පින්ට්

23

"පරිගණක වේලාව" සහ "මිනිසුන්ගේ කාලය" යන සීමාව තරණය කිරීම බියකරු සිහිනයකි. ප්‍රධානතම දෙය නම් කාල කලාප සහ දිවා ආලෝකය ඉතිරි කිරීමේ වේලාවන් පාලනය කරන නීති සඳහා ප්‍රමිතියක් නොමැති වීමයි. ඕනෑම වේලාවක තම කාල කලාපය සහ ඩීඑස්ටී නීති වෙනස් කිරීමට රටවලට නිදහස ඇති අතර ඔවුන් එසේ කරයි.

සමහර රටවල් උදා: ඊශ්‍රායලය, බ්‍රසීලය, සෑම වසරකම ඔවුන්ගේ දිවා ආලෝකය ඉතිරි කර ගත යුත්තේ කවදාදැයි තීරණය කරයි, එබැවින් ඩීඑස්ටී ක්‍රියාත්මක වන්නේ කවදාදැයි කල්තියා දැනගත නොහැක. තවත් සමහරු ඩීඑස්ටී බලාත්මක වන්නේ කවදාද යන්න පිළිබඳ ස්ථාවර (ඊෂ්) නීති ඇත. අනෙක් රටවල් සියල්ලම DST භාවිතා නොකරයි.

කාල කලාප GMT වෙතින් සම්පූර්ණ පැය වෙනස්කම් විය යුතු නැත. නේපාලය +5.45 කි. +13 වන කාල කලාප පවා ඇත. ඒ කියන්නේ:

SUN 23:00 in Howland Island (-12)
MON 11:00 GMT 
TUE 00:00 in Tonga (+13)

සියල්ලම එකම වේලාවකි, නමුත් වෙනස් දින 3 ක්!

කාල කලාප සඳහා කෙටි යෙදුම් පිළිබඳ පැහැදිලි ප්‍රමිතියක් ද නොමැත, සහ ඩීඑස්ටී හි ඇති විට ඒවා වෙනස් වන්නේ කෙසේද යන්න නිසා ඔබ මෙවැනි දේ සමඟ අවසන් වේ:

AST Arab Standard Time     UTC+03
AST Arabian Standard Time  UTC+04
AST Arabic Standard Time   UTC+03

හොඳම අවවාදය නම් හැකි තරම් දේශීය වේලාවන්ගෙන් stay ත්ව සිටිමින් ඔබට හැකි තැන UTC වෙත ඇලී සිටීමයි. අවසාන වේලාවට පමණක් දේශීය වේලාවට පරිවර්තනය කරන්න.

පරීක්‍ෂා කිරීමේදී ඔබ බටහිර හා නැගෙනහිර අර්ධගෝලයේ රටවල් පරීක්‍ෂා කරන බවට වග බලා ගන්න, ඩීඑස්ටී යන දෙකම ක්‍රියාත්මක වෙමින් පවතින අතර ඩීඑස්ටී භාවිතා නොකරන රටක් (සමස්ත 6 ක්).


ඊශ්‍රායලය සම්බන්ධයෙන් - මෙය අඩක් සත්‍යයකි. ඩීඑස්ටී වෙනස් කිරීම සඳහා කාලය ජූලියන් දින දර්ශනයේ නිශ්චිත දිනයක් නොවුනත් - හෙබ්‍රෙව් දින දර්ශනය මත පදනම් වූ රීතියක් තිබේ (2014 දී වෙනසක් සිදුවිය). කෙසේ වෙතත්, සාමාන්‍ය අදහස නිවැරදියි - මේ දේවල් වරකට වරක් වෙනස් විය හැකිය
යාරොන් යූ.

1
එසේම, AST = අත්ලාන්තික් සම්මත වේලාව. 'හොඳම උපදෙස්' සම්බන්ධයෙන් ගත් කල, එය ආරම්භක ස්ථානයක් ලෙස කමක් නැත, නමුත් ඔබ මෙම පිටුවේ ඉතිරි කොටස කියවා, කුඩා යාච් prayer ාවක් කියන්න, එවිට ඔබට එය ටික වේලාවකට නිවැරදිව ලැබෙනු ඇත.
ඩේවිඩ් වොලී

20

PHP සඳහා:

PHP> 5.2 හි DateTimeZone පන්තිය දැනටමත් වෙනත් අය සඳහන් කරන ඕල්සන් ඩීබී මත පදනම් වී ඇත, එබැවින් ඔබ කරන්නේ කාල කලාප පරිවර්තනය කරන්නේ පීඑච්පී තුළ මිස ඩීබී තුළ නොවේ නම්, ඔබට (තේරුම් ගැනීමට අපහසු) ඕල්සන් ලිපිගොනු සමඟ වැඩ කිරීමෙන් නිදහස් වේ.

කෙසේ වෙතත්, ඕල්සන් ඩීබී මෙන් නිතර නිතර PHP යාවත්කාලීන නොවේ, එබැවින් PHPs කාල කලාප පරිවර්තනයන් භාවිතා කිරීමෙන් ඔබට යල් පැන ගිය DST තොරතුරු ලබා ගත හැකි අතර ඔබේ දත්තවල නිරවද්‍යතාවයට බලපෑම් කළ හැකිය. මෙය නිතර සිදුවනු ඇතැයි අපේක්ෂා නොකරන අතර, එය සිදුවිය හැකි අතර, ඔබට ලොව පුරා විශාල පරිශීලකයින් සංඛ්‍යාවක් සිටී නම් එය සිදුවනු ඇත .

ඉහත ගැටලුවට මුහුණ දීම සඳහා, ටයිම්සෝන්ඩ් පීඑල්සී පැකේජය භාවිතා කරන්න . එහි කාර්යය වන්නේ PHP හි කාල කලාප දත්ත යාවත්කාලීන කිරීමයි. මෙම පැකේජය යාවත්කාලීන වන විට නිතර ස්ථාපනය කරන්න. (මෙම පැකේජයේ යාවත්කාලීනයන් හරියටම ඕල්සන් යාවත්කාලීනයන් අනුගමනය කරයිදැයි මට විශ්වාස නැත, නමුත් එය අවම වශයෙන් ඕල්සන් යාවත්කාලීන සංඛ්‍යාතයට ඉතා ආසන්න සංඛ්‍යාතයකින් යාවත්කාලීන වන බව පෙනේ.)


18

ඔබේ සැලසුමට එයට ඉඩ දිය හැකි නම්, දේශීය කාලය පරිවර්තනය කිරීම වළක්වා ගන්න!

සමහරුන්ට මෙය උමතුවක් යැයි සිතිය හැකි නමුත් යූඑක්ස් ගැන සිතන්න: පරිශීලකයින් නිරපේක්ෂ දිනයන් (2010.09.17, සැප්තැම්බර් 17 වන සිකුරාදා) ට වඩා වේගයෙන් (අද, ඊයේ, ඊළඟ සඳුදා) ආසන්නයේ ක්‍රියා කරයි. ඔබ ඒ ගැන වැඩියෙන් සිතන විට, කාල කලාපවල නිරවද්‍යතාවය (සහ ඩීඑස්ටී) වඩා වැදගත් වන්නේ දිනය ආසන්න වන තරමට ය now(), එබැවින් ඔබට දින / දින වේලාවන් සාපේක්ෂ ආකෘතියකින් +/- 1 හෝ 2 සඳහා ප්‍රකාශ කළ හැකි නම්, ඉතිරි දිනයන් UTC විය හැකි අතර එය පරිශීලකයින්ගෙන් 95% කට වඩා වැදගත් නොවේ.

මේ ආකාරයෙන් ඔබට UTC හි සියලුම දිනයන් ගබඩා කර UTC හි සාපේක්ෂ සැසඳීම් කළ හැකි අතර ඔබේ සාපේක්ෂ දින සීමාවෙන් පිටත පරිශීලක UTC දිනයන් පෙන්විය හැකිය.

මෙය පරිශීලක ආදානය සඳහා ද අදාළ විය හැකිය (නමුත් සාමාන්‍යයෙන් වඩා සීමිත ආකාරයකින්). පහත දැක්වෙන බිංදුවකින් තේරීම {ඊයේ, අද, හෙට, ඊළඟ සඳුදා, ඊළඟ බ්‍රහස්පතින්දා the පරිශීලකයාට දින තේරීමට වඩා සරල හා පහසුය. දිනය පිකර්ස් යනු පෝරමය පිරවීමේ වඩාත් වේදනාකාරී සං components ටක වේ. ඇත්ත වශයෙන්ම මෙය සියලු අවස්ථාවන් සඳහා ක්‍රියා නොකරනු ඇති නමුත් එය ඉතා බලවත් කිරීම සඳහා සුළු දක්ෂ නිර්මාණයක් පමණක් අවශ්‍ය බව ඔබට පෙනේ.


16

මම එය උත්සාහ කර නොමැති අතර, කාල කලාප ගැලපුම් සඳහා ප්‍රවේශයක් පහත පරිදි වේ:

  1. UTC හි සියල්ල ගබඩා කරන්න.

  2. TZOffsetsතීරු තුනක් සහිත වගුවක් සාදන්න : RegionClassId, StartDateTime, සහ OffsetMinutes (int, මිනිත්තු වලින්).

වගුවේ, දින සහ වේලාවන් ලැයිස්තුවක් ගබඩා විට දේශීය වේලාව වෙනස්, සහ කෙතරම් විසින්. වගුවේ ඇති කලාප ගණන සහ දිනයන් ගණන රඳා පවතින්නේ ඔබට සහාය දැක්විය යුතු ලෝකයේ දිනයන් සහ ප්‍රදේශ ගණන මතය. අනාගතය යම් ප්‍රායෝගික සීමාවකට ඇතුළත් කළ යුතු වුවත් මෙය “historical තිහාසික” දිනයක් ලෙස සිතන්න.

ඔබට ඕනෑම UTC වේලාවක දේශීය වේලාව ගණනය කිරීමට අවශ්‍ය වූ විට මෙය කරන්න:

SELECT DATEADD('m', SUM(OffsetMinutes), @inputdatetime) AS LocalDateTime
FROM   TZOffsets
WHERE  StartDateTime <= @inputdatetime
       AND RegionClassId = @RegionClassId;

ඔබගේ යෙදුමේ මෙම වගුව හැඹිලිගත කිරීමට ඔබට අවශ්‍ය විය හැකි අතර දත්ත සමුදායට පහර දෙනවාට වඩා විමසීම් කිරීමට LINQ හෝ ඒ හා සමාන ක්‍රමයක් භාවිතා කරන්න.

මෙම දත්ත පොදු වසම් tz දත්ත ගබඩාවෙන් ආසවනය කළ හැකිය .

මෙම ප්‍රවේශයේ වාසි සහ පාද සටහන්:

  1. නීති රීති කේතයට පිළිස්සෙන්නේ නැත, ඔබට නව කලාප හෝ දින පරාසයන් සඳහා ඕෆ්සෙට් පහසුවෙන් සකස් කළ හැකිය.
  2. සෑම පරාසයකම දිනයන් හෝ කලාපයන් සඳහා ඔබට සහාය වීමට අවශ්‍ය නැත, ඔබට අවශ්‍ය පරිදි ඒවා එකතු කළ හැකිය.
  3. කලාපවලට භූදේශපාලනික සීමාවන්ට කෙලින්ම අනුරූප විය යුතු නැත, සහ පේළි අනුපිටපත් නොකිරීමට (නිදසුනක් ලෙස, එක්සත් ජනපදයේ බොහෝ ප්‍රාන්තයන් ඩීඑස්ටී එකම ආකාරයකින් හසුරුවයි), ඔබට වෙනත් කලාපයක සාම්ප්‍රදායික ලැයිස්තු සමඟ සම්බන්ධ වන පුළුල් කලාපීය පංති ඇතුළත් කිරීම් තිබිය හැකිය. ජනපද, රටවල් ආදිය.
  4. පසුගිය වසර කිහිපය තුළ ඩීඑස්ටී හි ආරම්භක හා අවසන් දිනය වෙනස් වී ඇති එක්සත් ජනපදය වැනි තත්වයන් සඳහා, මෙය සමඟ කටයුතු කිරීම පහසුය.
  5. StartDateTime ක්ෂේත්‍රයට වේලාවක් ගබඩා කළ හැකි බැවින්, 2:00 AM සම්මත වෙනස් කිරීමේ කාලය පහසුවෙන් හසුරුවනු ලැබේ.
  6. ලෝකයේ සෑම තැනකම පැය 1 ක DST භාවිතා නොවේ. මෙය එම අවස්ථා පහසුවෙන් හසුරුවයි.
  7. දත්ත වගුව හරස් වේදිකාවක් වන අතර එය ඕනෑම දත්ත සමුදා වේදිකාවක් හෝ ක්‍රමලේඛන භාෂාවක් භාවිතා කරන සංවර්ධකයින්ට භාවිතා කළ හැකි වෙනම විවෘත කේත ව්‍යාපෘතියක් විය හැකිය.
  8. කාල කලාප සමඟ කිසිදු සම්බන්ධයක් නැති ඕෆ්සෙට් සඳහා මෙය භාවිතා කළ හැකිය. නිදසුනක් ලෙස, පෘථිවියේ භ්‍රමණය සඳහා වරින් වර සිදුවන තත්පර 1 ගැලපීම්, ග්‍රෙගෝරියානු දින දර්ශනයට හා ඇතුළත historical තිහාසික වෙනස් කිරීම් යනාදිය.
  9. මෙය දත්ත සමුදා වගුවක ඇති බැවින්, සම්මත වාර්තා විමසීම් ආදිය ව්‍යාපාර තර්කන කේතය හරහා සංචාරයකින් තොරව දත්ත වලින් ප්‍රයෝජන ගත හැකිය.
  10. මෙය ඔබට අවශ්‍ය නම් කාල කලාප ඕෆ්සෙට් ද හසුරුවන අතර කලාපයක් වෙනත් කාල කලාපයකට පවරා ඇති විශේෂ historical තිහාසික අවස්ථා සඳහා පවා ගණන් දිය හැකිය. ඔබට අවශ්‍ය වන්නේ අවම ආරම්භක දිනයක් සහිත එක් එක් කලාපයට කාල කලාප ඕෆ්සෙට් එකක් ලබා දෙන ආරම්භක දිනයකි. මේ සඳහා සෑම කාල කලාපයක් සඳහාම අවම වශයෙන් එක් කලාපයක්වත් අවශ්‍ය වනු ඇත, නමුත් ඔබට සිත්ගන්නාසුලු ප්‍රශ්න ඇසීමට ඉඩ දෙනු ඇත: "1989 පෙබරවාරි 2 වන දින පාන්දර 5:00 ට වොෂිංටන්හි යූමා, ඇරිසෝනා සහ සියැටල් අතර දේශීය වේලාවේ වෙනස කුමක්ද?" (එක් SUM () එකක් අනෙක් පැත්තෙන් අඩු කරන්න).

දැන්, මෙම ප්රවේශය එකම අවාසිය හෝ වෙනත් ඕනෑම පරිවර්ථනයන් බව ය සිට ඔරලෝසුව කිරීමට හිලව් සෘණ ඇති බව ඕනෑම DST වෙනස් සිට දේශීය වේලාව GMT නොකරන, පරිපූර්ණ වේ , නැවත නැවත දෙන දේශීය කාලය. එය සමඟ ගනුදෙනු කිරීමට පහසු ක්‍රමයක් නැත, මම බිය වෙමි, එය ප්‍රාදේශීය වේලාවන් ගබඩා කිරීම එක් හේතුවකි.


8
ඔබේ දත්ත සමුදා අදහස දැනටමත් ඕල්සන් දත්ත සමුදාය ලෙස ක්‍රියාත්මක කර ඇත. දිවා ආලෝකය ඉතිරිකිරීමේ කාලය අතිච්ඡාදනය නිර්මාණය කරන අතර දිවා ආලෝකය නිශ්චිත කාල කලාපය සඳහන් කිරීමෙන් ගැටළුව විසඳා ගත හැකිය. 2:15 EST සහ 2:15 EDT විවිධ වේලාවන් වේ. වෙනත් පෝස්ට් වල සඳහන් කර ඇති පරිදි ඕෆ්සෙට් නියම කිරීමෙන් ද අපැහැදිලි බව නිරාකරණය වේ.
බිල්තෝර්

5
ඔබේම දත්ත ගබඩාවක් තබා ගැනීමේ විශාල ගැටළුව එය යාවත්කාලීනව තබා ගැනීමයි. ඕල්සන් සහ වින්ඩෝස් ඔබ වෙනුවෙන් නඩත්තු කෙරේ. වගු යල් පැන ගිය නිසා මට නරක ඩීඑස්ටී සංක්‍රාන්ති අවස්ථා එකකට වඩා තිබේ. ඒවා මුළුමනින්ම ඉවත් කර රාමුවක් හෝ මෙහෙයුම් මට්ටමේ දත්ත ගබඩාවක් මත විශ්වාසය තැබීම වඩා විශ්වාසදායකය.
මැට් ජොන්සන්-පින්ට්

4
ඔබේම දත්ත සමුදායක් සාදන්න එපා : සෑම විටම පද්ධතියේ API මත රඳා සිටින්න !
ඇලෙක්ස්

15

මට මෑතකදී වෙබ් යෙදුමක ගැටළුවක් ඇති වූ අතර අජැක්ස් පසුපසට පසු මගේ සේවාදායක පැත්තේ කේතයට නැවත පැමිණෙන වේලාව සේවය කළ දිවා කාලයට වඩා වෙනස් විය.

බොහෝ විට සේවාදායකයාට මගේ ජාවාස්ක්‍රිප්ට් කේතය සමඟ සම්බන්ධ වීමට සිදුවිය, එය සේවාදායකයාට නැවත පෝස්ට් කිරීම සඳහා දිනය සකස් කරන ලදි, මන්ද ජාවාස්ක්‍රිප්ට් කාල කලාපය සහ දිවා ආලෝකය ඉතිරි කිරීම සඳහා සකස් කර ඇති අතර සමහර බ්‍රව්සර්වල දිවා ආලෝකය ඉතිරිකිරීම සඳහා ගණනය කිරීම අනෙක් අයට වඩා වෙනස් බව පෙනේ.

අවසානයේදී මම සේවාදායකයාගේ දිනය හා වේලාව ගණනය කිරීම් මුළුමනින්ම ඉවත් කිරීමට තීරණය කළ අතර, ස්ථාවර පරිවර්තනයක් සඳහා ඉඩ ලබා දීම සඳහා පූර්ණ සංඛ්‍යා යතුරක් මත මගේ සේවාදායකයට නැවත තැපැල් කරන ලදි.

මෙයින් මගේ ඉගෙනීම: ඔබ අනිවාර්යයෙන්ම කළ යුතු නම් මිස වෙබ් යෙදුම්වල ජාවාස්ක්‍රිප්ට් දිනය සහ වේලාව ගණනය කිරීම් භාවිතා නොකරන්න.


ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක වන්නේ සේවාදායක යන්ත්‍රයේ නොව සේවාදායක යන්ත්‍රයේ ය. ජාවාස්ක්‍රිප්ට් හි මූලික දිවා කාලය සේවාදායකයාගේ දිවා කාලය මිස සේවාදායකයාගේ දිවා කාලය නොවේ.
BalusC

හායි බලුස් සී. මට මෙය වැටහී ඇත (මගේ මුල් පෝස්ට් එකෙන්: "දිනය ගොඩනඟා ඇති සේවාදායකයාගේ ජාවාකෝඩ් ස්ක්‍රිප්ට් ..."). මගේ ගැටළුව වූයේ ඇතැම් සේවාදායක යන්ත්‍රය ඩීඑස්ටී එක් ආකාරයකින් සැකසූ අතර තවත් සමහරක් වෙනත් ආකාරයකින් ය. එම නිසා බ්‍රව්සරයේ අමුතුකම වැළැක්වීම සඳහා මම එම සැකසුම් සේවාදායකය සියල්ලම ගෙන ගියෙමි
ජූන්

@ ජූන් - සහ ඔබට හඳුනා ගැනීමට හෝ ඉඩ දිය නොහැකි ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කිරීමේදී දෝෂ තිබේ. එබැවින් ඔව්, වැදගත් දේවල් සඳහා කිසි විටෙකත් සේවාදායකයාගේ පැත්තෙන් ECMAScript දින ගණනය කිරීම් භාවිතා නොකරන්න (ඔබට වෙනත් ආකාරයකින් හොඳ කාර්යයක් කළ හැකි වුවද).
රොබ්

14

“මාරුව සැලසුම් කිරීමේ පද්ධති (උදා: කර්මාන්තශාලා සේවකයින්)” සහ “ගෑස් මත යැපෙන කළමනාකරණ පද්ධති)…

පැය 23 සහ 25 දිගු දින සමඟ කටයුතු කිරීම වේදනාවක් වන අතර පැය 8 ක මාරුව පැය 7 ක් හෝ පැය 9 ක් ගතවේ. ගැටළුව වන්නේ මෙම විශේෂ අවස්ථා වලදී ඔවුන් කරන දේ පිළිබඳව එක් එක් ගනුදෙනුකරුවන්ට හෝ පාරිභෝගික දෙපාර්තමේන්තුවට පවා ඔවුන් විසින් නිර්මාණය කර ඇති විවිධ නීති රීති (බොහෝ විට ලේඛනගත නොකර) ඇති බව ඔබට පෙනී යනු ඇත.

ඔබේ “රාක්කයෙන් බැහැර” මෘදුකාංගය සඳහා මුදල් ගෙවා අවසන් වන තුරු සමහර ප්‍රශ්න පාරිභෝගිකයාගෙන් අසනු නොලැබේ. මෘදුකාංග මිලදී ගැනීමේදී මේ ආකාරයේ ගැටළු ගැන සිතන ගනුදෙනුකරුවෙකු සොයා ගැනීම ඉතා කලාතුරකිනි.

සෑම අවස්ථාවකදීම ඔබ යූටීසී හි කාලය සටහන් කර ගත යුතු අතර දිනය / වේලාව ගබඩා කිරීමට පෙර දේශීය වේලාවට / සිට පරිවර්තනය කළ යුතුය. කෙසේ වෙතත්, යම් වේලාවක් ගත වන්නේ කුමන වේලාවකදැයි දැන ගැනීම පවා දිවා ආලෝකය ඉතිරි කිරීම සහ කාල කලාප සමඟ දුෂ්කර විය හැකිය.


6
මගේ පෙම්වතිය, හෙදියක්, රාත්‍රියේ වැඩ කරන අතර ඔවුන්ට ඩීඑස්ටී මාරුවීමේදී කාල කලාපය ලිවිය යුතුය. උදාහරණයක් ලෙස, 2AM CST vs 2AM CDT
ජෝ ෆිලිප්ස්

1
ඔව්, මෙය පොදු ය: ඔබ (සිවිල්) දෛනික සාමාන්‍යයක් ගණනය කරන විට, ඔබට දින 23, 24 හෝ 25 දින සමඟ සාර්ථකව කටයුතු කළ යුතුය. එහි ප්‍රති consequ ලයක් ලෙස, ඔබ දින 1 එකතු කිරීම ගණනය කරන විට එය පැය 24 ක් එකතු නොවේ ! දෙවනුව, ඔබේම කාල කලාප කේතයක් තැනීමට උත්සාහ නොකරන්න; පද්ධති API පමණක් භාවිතා කරන්න. යාවත්කාලීන කාල කලාප දත්ත සමුදාය ලබා ගැනීම සඳහා යොදවා ඇති සෑම පද්ධතියක්ම යාවත්කාලීන කිරීමට අමතක නොකරන්න .
ඇලෙක්ස්

12

වෙබය සඳහා, නීති එතරම් සංකීර්ණ නොවේ ...

  • සේවාදායක පැත්ත, UTC භාවිතා කරන්න
  • සේවාදායකයාගේ පැත්තෙන්, ඕල්සන් භාවිතා කරන්න
    • හේතුව: යූටීසී ඕෆ්සෙට් දිවා ආලෝකය ඉතිරිකිරීමේ ආරක්ෂිත නොවේ (උදා: නිව්යෝර්ක් යනු ඊඑස්ටී (යූටීසී - පැය 5) වසරේ කොටසක්, ඊඩීටී (යූටීසී - පැය 4) වසරේ ඉතිරි කාලය).
    • සේවාදායක පාර්ශව කාල කලාප නිර්ණය සඳහා, ඔබට විකල්ප දෙකක් තිබේ:
      • 1) පරිශීලක සැකසුම් කලාපය (ආරක්ෂිත) තබා ගන්න
      • 2) ස්වයංක්‍රීයව හඳුනාගැනීමේ කලාපය

ඉතිරිය ඔබගේ සේවාදායක පැත්තේ දිවා කාලයේ පුස්තකාල භාවිතා කරමින් යූටීසී / දේශීය පරිවර්තනය පමණි. යන්න හොඳයි ...


2
ආරම්භක ස්ථානයක් ලෙස මෙය හොඳ උපදෙස් වේ, නමුත් එය මුළුමනින්ම යෙදුම මත රඳා පවතී. මිත්‍රශීලී වෙබ් අඩවියක් සඳහා මෙය හොඳ විය හැකි නමුත්, ඔබේ අයදුම්පතට යමෙකු නඩු පැවරිය හැකි නෛතික / අධිකරණ / මූල්‍යමය අංගයක් තිබේ නම් (මම කිහිප දෙනෙකුගේ වැඩ කර ඇත), මෙය විවිධ වර්ගවල ඇති බැවින් මෙය අතිශය සරල කිරීමකි. කාලය ', මෙම පිටුවේ වෙනත් තැනක සඳහන් කර ඇති පරිදි.
ඩේවිඩ් වොලී

12

වෙබ් අඩවි සහ වෙනත් පසු සේවා ඇතුළුව සේවාදායකයක ක්‍රියාත්මක වන යෙදුම් සම්බන්ධයෙන්, සේවාදායකයේ කාල කලාප සැකසුම යෙදුම විසින් නොසලකා හැරිය යුතුය.

පොදු උපදෙස් වන්නේ සේවාදායකයේ කාල කලාපය UTC ලෙස සැකසීමයි. මෙය සැබවින්ම හොඳ හොඳම භාවිතයකි, නමුත් එය වෙනත් හොඳම භාවිතයන් අනුගමනය නොකරන යෙදුම් සඳහා සංගීත ආධාරකයක් ලෙස පවතී. නිදසුනක් ලෙස, යූටීසී මත පදනම් වූ කාලරාමු වෙනුවට දේශීය කාලරාමු සමඟ ලිපිගොනු ලොග් කිරීම සඳහා සේවාවක් ලිවීම විය හැකි අතර එමඟින් දිවා ආලෝකය ඉතිරි කිරීමේ වේලාව පසුපසට මාරුවීමේදී අවිනිශ්චිතතාවයන් ඇති කරයි. සේවාදායකයේ කාල කලාපය UTC ලෙස සැකසීම එම යෙදුම නිවැරදි කරයි . කෙසේ වෙතත් සැබෑ විසඳුම වනුයේ යෙදුම ආරම්භ කිරීම සඳහා UTC භාවිතා කර ලොග් වීමයි.

වෙබ් අඩවි ඇතුළු සර්වර්-සයිඩ් කේතය, කළ යුතු නැහැ සේවාදායකය දේශීය කාල කලාපය විශේෂයෙන් කිසිම දෙයක් කිරීමට බලාපොරොත්තු වෙනවා.

සමහර භාෂාවලින්, ප්‍රාදේශීය කාල කලාපයට පහසුවෙන් යෙදුම් කේතයට පිවිසිය හැකිය. උදාහරණයක් ලෙස DateTime.ToUniversalTime.NET හි ක්‍රමය දේශීය කාල කලාපයේ සිට UTC බවට පරිවර්තනය වන අතර DateTime.Nowදේපල දේශීය කාල කලාපයේ වත්මන් කාලය නැවත ලබා දෙයි. එසේම, Dateජාවාස්ක්‍රිප්ට් හි ඉදිකිරීම්කරු පරිගණකයේ දේශීය කාල කලාපය භාවිතා කරයි. මේ වගේ තවත් බොහෝ උදාහරණ තියෙනවා. පරිගණකයේ දේශීය කාල කලාප සැකසුම භාවිතා කරන ඕනෑම කේතයක් මග හැර, ආරක්ෂක වැඩසටහන්කරණය පුහුණු කිරීම වැදගත්ය.

ඩෙස්ක්ටොප් යෙදුම්, ජංගම යෙදුම් සහ සේවාදායක පාර්ශවීය ජාවාස්ක්‍රිප්ට් වැනි සේවාදායක පාර්ශවීය කේත සඳහා දේශීය කාල කලාපය භාවිතා කර වෙන් කරන්න.


11

ඔබගේ සේවාදායකයන් UTC ලෙස සකසා ඇති අතර ඒවා සියල්ලම ntp හෝ ඊට සමාන ලෙස වින්‍යාස කර ඇති බවට වග බලා ගන්න.

UTC විසින් දිවා ආලෝකය ඉතිරි කිරීමේ වේලාව පිළිබඳ ගැටළු මඟහරවා ගන්නා අතර සමමුහුර්ත නොවන සේවාදායකයන් අනාවැකි කිව නොහැකි ප්‍රති results ල ඇති කිරීමට හේතු වේ.


9

FAT32 ගොනු පද්ධතියේ ගබඩා කර ඇති කාලරාමු සමඟ කටයුතු කිරීමේදී ප්‍රවේශම් වන්න - එය සෑම විටම දේශීය කාල ඛණ්ඩාංකවල පවතී (ඒවාට DST ඇතුළත් වේ - msdn ලිපිය බලන්න ). ඒකට පිච්චුණා.


නියම කරුණ. NTFS හට මෙම ගැටළුව නොමැත, නමුත් සමහර අය තවමත් FAT32 භාවිතා කරයි - විශේෂයෙන් USB යතුරු මත.
මැට් ජොන්සන්-පින්ට්

7

තවත් දෙයක් නම්, සේවාදායකයන්ට යාවත්කාලීන දිවා ආලෝකය ඉතිරි කිරීමේ පැච් ඇති බවට වග බලා ගන්න.

අපි යූටීසී පදනම් කරගත් පද්ධතියක් භාවිතා කළත්, උතුරු ඇමරිකානු පරිශීලකයින් සඳහා සති තුනක කාලයක් සඳහා අපගේ වේලාව පැයක් පමණ අඛණ්ඩව පවතින තත්වයක් පසුගිය වසරේ අපට තිබුණි.

අවසානයේ එය සේවාදායකයන් විය. ඔවුන්ට යාවත්කාලීන පැච් එකක් අවශ්‍ය විය ( වින්ඩෝස් සර්වර් 2003 ).


6

PHP හි DateTimeZone::listAbbreviations()ප්‍රතිදානය

මෙම PHP ක්‍රමය මඟින් 'ප්‍රධාන' කාල කලාප (CEST වැනි) අඩංගු සහායක අරා ලබා දෙයි, ඒවාටම වඩා විශේෂිත 'භූගෝලීය' කාල කලාප (යුරෝපය / ඇම්ස්ටර්ඩෑම් වැනි) අඩංගු වේ.

ඔබ මෙම කාල කලාප සහ ඒවායේ ඕෆ්සෙට් / ඩීඑස්ටී තොරතුරු භාවිතා කරන්නේ නම්, පහත සඳහන් දෑ අවබෝධ කර ගැනීම අතිශයින් වැදගත් ය:

සෑම කාල කලාපයකම විවිධ ඕෆ්සෙට් / ඩීඑස්ටී වින්‍යාසයන් (historical තිහාසික වින්‍යාසයන් ඇතුළුව) ඇතුළත් කර ඇති බව පෙනේ !

උදාහරණයක් ලෙස, මෙම ශ්‍රිතයේ ප්‍රතිදානයේදී යුරෝපය / ඇම්ස්ටර්ඩෑම් හය වතාවක් සොයාගත හැකිය. අවස්ථා දෙකක් (ඕෆ්සෙට් 1172/4772) ඇම්ස්ටර්ඩෑම් කාලය සඳහා 1937 දක්වා භාවිතා වේ; දෙකක් (1200/4800) 1937 සහ 1940 අතර භාවිතා කළ කාලය සඳහා ය; 1940 සිට භාවිතා කරන කාලය සඳහා දෙකක් (3600/4800) වේ.

එමනිසා, මෙම ශ්‍රිතය මඟින් ලබා දී ඇති ඕෆ්සෙට් / ඩීඑස්ටී තොරතුරු දැනට නිවැරදි / භාවිතයේ පවතින බැවින් ඔබට විශ්වාසය තැබිය නොහැක !

නිශ්චිත කාල කලාපයක වත්මන් ඕෆ්සෙට් / ඩීඑස්ටී දැන ගැනීමට ඔබට අවශ්‍ය නම්, ඔබට මෙවැනි දෙයක් කිරීමට සිදුවේ:

<?php
$now = new DateTime(null, new DateTimeZone('Europe/Amsterdam'));
echo $now->getOffset();
?>

5

ඩීඑස්ටී සක්‍රීයව ක්‍රියාත්මක වන දත්ත සමුදා පද්ධති නඩත්තු කිරීමට ඔබට සිදුවුවහොත්, වැටීමේ සංක්‍රාන්ති සමයේදී ඒවා වසා දැමිය යුතුද යන්න හොඳින් පරීක්ෂා කරන්න. මැන්ඩි ඩී.බී.එස් (හෝ වෙනත් පද්ධති) එකම වේලාව (දේශීය) වේලාවෙන් දෙවරක් සම්මත කිරීමට කැමති නැත, ඔබ වැටෙන විට ඔරලෝසුව ආපසු හරවන විට සිදු වන්නේ එයයි. SAP විසින් මෙය (IMHO සැබවින්ම පිළිවෙලට) විසඳා ඇත - ඔරලෝසුව ආපසු හරවනවා වෙනුවට, ඔවුන් පැය දෙකක කාලයක් සාමාන්‍ය වේගයෙන් අඩක් ධාවනය කිරීමට ඉඩ දෙයි ...


4

ඔබ .NET රාමුව භාවිතා කරනවාද? එසේ නම්, .NET 3.5 සමඟ එකතු කරන ලද DateTimeOffset වර්ගයට මම ඔබට හඳුන්වා දෙන්නම් .

මෙම ව්‍යුහය a DateTimeසහ ඕෆ්සෙට් ( TimeSpan) යන දෙකම දරයි , එය DateTimeOffsetඋදාහරණ දිනය හා වේලාව සහ සම්බන්ධීකරණ විශ්ව වේලාව (UTC) අතර වෙනස නියම කරයි .

  • මෙම DateTimeOffset.Nowස්ථිතික ක්රමය ආපසු DateTimeOffset වත්මන් (දේශීය) කාලය, හා (මෙහෙයුම් පද්ධතිය ප්රාදේශීය තොරතුරු අර්ථ දක්වා ඇති පරිදි) පියවා දේශීය සමන්විත උදාහරණයක්.

  • මෙම DateTimeOffset.UtcNowස්ථිතික ක්රමය ආපසු DateTimeOffsetUTC වත්මන් කාලය සමන්විත උදාහරණයක් (ඔබ බිම්කඩකි නම් වැනි) ඒ අතර වේ.

ටයිම්සෝන් සහ ටයිම්සෝන් ඉන්ෆෝ පන්ති වෙනත් ප්‍රයෝජනවත් වර්ග වේ .


ඉදිරිපත් කළ ගැටලුවට මෙය විසඳුමක් නොවේ.
කැරඩ්රි

4

.NET හි මේ සමඟ පොරබදින අය සඳහා, ඔබේ කාලය භාවිතා කිරීම DateTimeOffsetසහ / හෝ වටිනවාදැයි බලන්න TimeZoneInfo.

ඔබට IANA / Olson කාල කලාප භාවිතා කිරීමට අවශ්‍ය නම් , හෝ ගොඩනගා ඇති වර්ග ඔබේ අවශ්‍යතා සඳහා ප්‍රමාණවත් නොවන බව සොයා ගැනීමට නම් , .NET සඳහා වඩා හොඳ දිනයක් සහ කාල API ලබා දෙන Noda Time බලන්න .


4

ව්‍යාපාර නීති සෑම විටම සිවිල් වේලාවට වැඩ කළ යුතුය (වෙනත් ආකාරයකින් පවසන නීති නොමැති නම්). සිවිල් කාලය අවුල් ජාලයක් බව මතක තබා ගන්න, නමුත් එය මිනිසුන් භාවිතා කරන නිසා එය වැදගත් වේ.

අභ්‍යන්තරව, කාලරාමු සිවිල් කාල-තත්පර-යුගයේ සිට වැනි දෙයක් තුළ තබා ගන්න. මෙම යුගයේ කාරණය විශේෂයෙන් (මම මනාප නැහැ යුනික්ස් යුගයේ ) නමුත් එය විකල්ප වඩා මේක් දේවල් පහසු නැත. ඔබ සැබවින්ම ඔවුන්ට අවශ්‍ය දෙයක් කරන්නේ නම් මිස පිම්ම තත්පර නොපවතින බව මවාපාමින් (උදා: චන්ද්‍රිකා ලුහුබැඳීම). ඩීඑස්ටී රීති ක්‍රියාත්මක කළ යුතු එකම ස්ථානය කාලරාමු සහ පෙන්වන වේලාව අතර සිතියම්ගත කිරීම ය; නීති නිතර වෙනස් වේ (ගෝලීය මට්ටමින්, වසරකට කිහිප වතාවක්; දේශපාලන politicians යන්ට දොස් කියන්න) එබැවින් ඔබ සිතියම්ගත කිරීම දැඩි ලෙස කේත නොකිරීමට වග බලා ගත යුතුය. ඕල්සන්ගේ TZ දත්ත සමුදාය මිල කළ නොහැකි ය.


3
මෙහි ඇති ගැටළුව නම් සිවිල් කාලය (කැලැන්ඩර වේලාව) එක මොහොතක්වත් නිසි ලෙස නිරූපණය නොකිරීමයි. ඔබ තත්පරයෙන් යුගයේ සිට ගතහොත්, දිවා කාලයේ ඉතිරිකිරීමේ සංක්‍රාන්ති සඳහා මඟ හැරුණු හෝ නැවත ලබා දුන් සෑම මොහොතකම ඔබ සැබවින්ම ගණන් ගත යුතුද? බොහෝ විට නැත. යුගයේ පදනම ක්‍රියාත්මක වන්නේ යූටීසී හෝ වෙනත් ස්ථාවර, ක්ෂණික-කාලීන යොමු කිරීම් වලට එරෙහිව පමණි.
මැට් ජොන්සන්-පින්ට්

AttMattJohnson එබැවින් "ව්‍යාපාර නීති" කොටස. අලුයම 2.30 ට (හෝ කුමන වේලාවකද) යමක් සිදු වන බව නීති රීති පවසනවා නම්, එය වසරකට දෙවරක් දෙවරක් සිදු වන අතර කිසි විටෙකත් අවුරුද්දේ එක් දිනකදී සිදු නොවේ. රීතිය පැහැදිලි නොකරන්නේ නම් පාරිභෝගිකයා බලාපොරොත්තු වන්නේ එයයි .
user253751

සිවිල් වේලාවේ අභ්‍යන්තර කාලරාමු තබා ගැනීම ඉතා උපක්‍රමශීලී විය හැකිය. යුගයක් තවමත් උපක්‍රමශීලී බැවින් එය තත්පර ගණනක් ලෙස තබා ගැනීම, මම කියන්නේ ඉතා අනතුරුදායක ය. මට විශ්වාසයි එය කරන පුද්ගලයින් සිටින අතර, ඔබ සුපරීක්ෂාකාරී නම් බොහෝ විට එය නිසි ලෙස ක්‍රියාත්මක කිරීමට හැකි වනු ඇත, නමුත් එය හොඳම භාවිතයක් හෝ සාමාන්‍ය නිර්දේශයක් ලෙස සැලකිය නොහැකිය.
ස්ටීව් සමුළුව

2

සාවද්‍ය හෝ අවම වශයෙන් ව්‍යාකූල බවක් පෙනෙන කරුණු දෙකක් පෙන්වා දීමට අවශ්‍ය විය:

දිවා ආලෝකය ඉතිරිකිරීමෙන් බලපෑමට ලක් නොවන ඒකාබද්ධ ප්‍රමිතියකට අනුව සෑම විටම කාලය ගත කරන්න. යූටීසී බොහෝ විට සඳහන් කර ඇති බවක් පෙනෙන්නට තිබුණත්, GMT සහ UTC විවිධ පුද්ගලයින් විසින් සඳහන් කර ඇත.

(පාහේ) සියලුම ප්‍රායෝගික පරිගණක අරමුණු සඳහා, UTC යනු ඇත්ත වශයෙන්ම GMT ය. භාගික තත්පරයකින් කාලරාමුව ඔබ දුටුවේ නැත්නම්, ඔබ GMT සමඟ ගනුදෙනු කරන්නේ මෙම වෙනස අතිරික්තයක් ඇති කරමිනි.

කාලරාමු ගබඩා කිරීමේදී දේශීය කාල ඕෆ්සෙට් (ඩීඑස්ටී ඕෆ්සෙට් ඇතුළුව) ඇතුළත් කරන්න.

කාලරාමුව සෑම විටම GMT හි නිරූපණය වන අතර එමඟින් ඕෆ්සෙට් නොමැත.


1
දේශීය කාල ඕෆ්සෙට් මඟින් ඔබට සිද්ධියේ මුල් "බිත්ති කාලය" ප්‍රතිනිර්මාණය කිරීමට ඉඩ ලබා දේ. ඔබ මෙම අතිරේක ක්ෂේත්‍රය ගබඩා නොකරන්නේ නම්, මෙම දත්ත නැති වී යයි.
nogridbag

ඔව්, UTC සහ GMT ඕෆ්සෙට් හැර ප්‍රතිලෝම වේ. උදාහරණයක් ලෙස UTC-0700 GMT + 0700 ට සමාන වේ. ඇත්ත වශයෙන්ම, ඩිජිටල් සෑම දෙයක්ම මේ දිනවල UTC භාවිතා කළ යුතුය.
මැට් ජොන්සන්-පින්ට්

1
Att මැට්: යූටීසී සහ ජීඑම්ටී ඕෆ්සෙට් ප්‍රතිලෝමව පවතින බව ඔබට විශ්වාසද? මට ඒ ගැන කියවිය හැක්කේ කොතැනින්ද?
Reto Höhener

ඇත්තටම මම හිතන්නේ මම කලින් වැරදියි. GMT සහ UTC තමන්ම ප්‍රතිලෝම නොවේ. IANA / Olson / TZDB දත්ත සමුදාය වැනි ප්‍රතිලෝමව ඒවා පෙන්වන ක්‍රියාත්මක කිරීම් තිබේ. මෙහි බලන්න . ප්‍රතිලෝමව ඕෆ්සෙට් ඔබ දකින තවත් ක්ෂේත්‍රයක් වන්නේ ජාවාස්ක්‍රිප්ට් හි getTimezoneOffset () ශ්‍රිතයයි.
මැට් ජොන්සන්-පින්ට්

Att මැට් ජොන්සන්: ඒවා හක්ක වන අතර ඒවා අහෝසි කළ යුතුය.
ඇලික්ස් ඇක්සෙල්

2

මෙන්න මගේ අත්දැකීම: -

(කිසිදු තෙවන පාර්ශවීය පුස්තකාලයක් අවශ්‍ය නොවේ)

  • පරිශීලකයින්, සේවාදායකයන්, කාල කලාප හෝ ඩීඑස්ටී නොසලකා දත්ත ගබඩාවේ ඇති සියලුම දිනය / වේලාවන් එකම ප්‍රමිතියකින් යුක්ත වන පරිදි සේවාදායක පැත්තෙන් UTC ආකෘතියෙන් ගබඩා කරන්න.
  • UI ස්තරයේ හෝ පරිශීලකයා වෙත යවන ලද ඊමේල් වල, පරිශීලකයාට අනුව වේලාවන් පෙන්විය යුතුය. ඒ සඳහා, ඔබට පරිශීලකයාගේ කාල කලාප ඕෆ්සෙට් තිබිය යුතු අතර එමඟින් ඔබේ දත්ත සමුදායේ UTC වටිනාකමට මෙම ඕෆ්සෙට් එක එකතු කළ හැකි අතර එමඟින් පරිශීලකයාගේ දේශීය වේලාව ලැබෙනු ඇත. පරිශීලකයා ලියාපදිංචි වන විට ඔබට ඔවුන්ගේ කාල කලාප ඕෆ්සෙට් ගත හැකිය, නැතහොත් ඔබට ඒවා වෙබ් සහ ජංගම වේදිකාවල ස්වයංක්‍රීයව හඳුනාගත හැකිය. වෙබ් අඩවි සඳහා, ජාවාස්ක්‍රිප්ට් හි ක්‍රියාකාරී getTimezoneOffset () ක්‍රමය 1.0 අනුවාදයේ සිට සම්මතයක් වන අතර එය සියලු බ්‍රව්සර් සමඟ අනුකූල වේ. (Ref: http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp )

ඔබ DST වෙනස්කම් සලකා බලන විට මෙය ක්‍රියා නොකරයි. getTimezoneOffsetඔබ එය ඇමතූ දිනය සහ වේලාව සඳහා ඕෆ්සෙට් නැවත ලබා දෙයි. කාල කලාපයක් දිවා ආලෝකය ඉතිරි කිරීමේ කාලය තුළ හෝ ඉන් පිටත සංක්‍රමණය වන විට එම ඕෆ්සෙට් වෙනස් විය හැකිය. කාල කලාප ටැගය විකියේ "කාල කලාපය! = ඕෆ්සෙට්" බලන්න .
මැට් ජොන්සන්-පින්ට්

1
ඔබට "10:00 ට යමක් කරන්න" වැනි අනතුරු ඇඟවීමක් ගබඩා කිරීමට අවශ්‍ය නම්, DST මාරුවීම් නිසා ඔබට එය UTC හි ගබඩා කළ නොහැක. ඔබ එය දේශීය වේලාවට සාපේක්ෂව ගබඩා කළ යුතුය.
ඇලෙක්ස්

2

කම්පියුටර්ෆයිල් නාලිකාවේ යූ ටියුබ් හි කාල කලාප පිළිබඳ ටොම් ස්කොට්ගේ වීඩියෝවෙහි මාතෘකාව පිළිබඳ ලස්සන හා විනෝදාත්මක විස්තරයක් ද ඇත. උදාහරණ අතර:

  • සමෝවා (පැසිෆික් සාගරයේ දූපතක්) ඕස්ට්‍රේලියාව සහ නවසීලන්තය සමඟ වෙළඳාම පහසු කිරීම සඳහා පැය 24 කින් සිය කාල කලාපය ඉදිරියට ගෙන යයි.
  • ජනගහනය 2 ක් විවිධ කාල කලාප අනුගමනය කරන බටහිර ඉවුර ,
  • 18 වන සියවස ජූලියන් දින දර්ශනයේ සිට ග්‍රෙගෝරියානු දින දර්ශනයට වෙනස් වේ (එය 20 වන සියවසේ රුසියාවේ සිදු විය).

1

ඇත්ත වශයෙන්ම, kernel32.dll විසින් SystemTimeToTzSpecificLocation අපනයනය නොකරයි. කෙසේ වෙතත් එය පහත සඳහන් දෙක අපනයනය කරයි: SystemTimeToTzSpecificLocalTime සහ TzSpecificLocalTimeToSystemTime ...


1

කිසි විටෙකත් වැනි ඉදිකිරීම්කරුවන් මත පමණක් රඳා නොසිටින්න

 new DateTime(int year, int month, int day, int hour, int minute, TimeZone timezone)

ඩීඑස්ටී නිසා නිශ්චිත දිනයක කාලයක් නොමැති විට ඔවුන්ට ව්‍යතිරේකයන් විසි කළ හැකිය. ඒ වෙනුවට, එවැනි දිනයන් නිර්මාණය කිරීම සඳහා ඔබේම ක්‍රමවේදයන් ගොඩනඟන්න. ඒවා තුළ, ඩීඑස්ටී නිසා සිදුවන ඕනෑම ව්‍යතිරේකයක් අල්ලාගෙන, සංක්‍රාන්ති ඕෆ්සෙට් සමඟ අවශ්‍ය කාලය සකසන්න. කාල කලාපයට අනුව විවිධ දිනයන්හි සහ විවිධ වේලාවන්හි (බ්‍රසීලයට මධ්‍යම රාත්‍රියේදී පවා) DST සිදුවිය හැකිය.


1

කාලය හැසිරවීම විස්තර කර ඇති දැවැන්ත අවුල බවත්, ඔබට කිසි විටෙකත් උදාසීන විය නොහැකි බවත් ඔප්පු කිරීමට එක් උදාහරණයක් පමණි. මෙම පිටුවේ ස්ථාන කිහිපයක පිම්ම තත්පර නොසලකා හැර ඇත.

මීට වසර කිහිපයකට පෙර, ඇන්ඩ්‍රොයිඩ් මෙහෙයුම් පද්ධතිය යූටීසී කාල සටහනක් ලබා ගැනීම සඳහා ජීපීඑස් චන්ද්‍රිකා භාවිතා කළ නමුත් ජීපීඑස් චන්ද්‍රිකා අධික තත්පර භාවිතා නොකරන බව නොසලකා හැරියේය. ඇපල් දුරකථන භාවිතා කරන්නන් සහ ඇන්ඩ්‍රොයිඩ් දුරකථන භාවිතා කරන්නන් තත්පර 15 ක් පමණ දුරින් ගණනය කිරීම් සිදු කරන විට, අලුත් අවුරුදු දිනයේ ව්‍යාකූලත්වයක් ඇති වන තුරු කිසිවෙකු දුටුවේ නැත.

මම හිතන්නේ එය එතැන් සිට සවි කර ඇති නමුත් මෙම 'සුළු තොරතුරු' නැවත ඔබව හොල්මන් කරන්නේ කවදාදැයි ඔබ දන්නේ නැත.


1
  • යූටීසී ඕෆ්සෙට් (හෝ කාල කලාපය පිළිබඳ සඳහනක්) නොමැතිව කිසි විටෙකත් දේශීය වේලාව ගබඩා නොකරන්න - එය නොකළ යුතු ආකාරය පිළිබඳ උදාහරණ FAT32 සහ struct tmC. in
  • කාල කලාපයක් යනු සංයෝජනයක් බව තේරුම් ගන්න
    • UTC ඕෆ්සෙට් කට්ටලයක් (උදා: ශීත + තුවේ දී +0100, ගිම්හානයේදී +0200)
    • මාරුවීම සිදු වන විට නීති රීති (එය කාලයත් සමඟ වෙනස් විය හැකිය: නිදසුනක් වශයෙන්, 1990 දශකයේ දී යුරෝපා සංගමය විසින් මාරුවීම් මාර්‍ගය මාර්තු සහ ඔක්තෝබර් අවසාන ඉරිදා දිනවල සම්මත වේලාව 02:00 ට / 03: 00 DST ලෙස එකඟ විය; මීට පෙර මෙය වෙනස් විය. සාමාජික රටවල් අතර).

Do සමහර ක්‍රියාත්මක කිරීම් struct tmමඟින් යූටීසී ඕෆ්සෙට් ගබඩා කරයි, නමුත් මෙය ප්‍රමිතියට ඇතුළත් කර නැත.


-4

දත්ත සමුදායන් සමඟ කටයුතු කිරීමේදී (විශේෂයෙන් MySQL , නමුත් මෙය බොහෝ දත්ත සමුදායන් සඳහා අදාළ වේ), UTC ගබඩා කිරීම මට අපහසු විය.

  • දත්ත සමුදායන් සාමාන්‍යයෙන් පෙරනිමියෙන් සේවාදායකයේ වේලාව සමඟ ක්‍රියා කරයි (එනම්, CURRENT_TIMESTAMP).
  • ඔබට සේවාදායක කාල කලාපය වෙනස් කිරීමට නොහැකි විය හැකිය.
  • ඔබට කාල කලාපය වෙනස් කිරීමට හැකි වුවද, සේවාදායක කාල කලාපය දේශීය යැයි අපේක්ෂා කරන තෙවන පාර්ශවීය කේතයක් ඔබට තිබිය හැකිය.

දත්ත සමුදායේ සේවාදායක දිවා කාලය ගබඩා කිරීම පහසු බව මට පෙනී ගියේය, පසුව SQL ප්‍රකාශයන්හි ගබඩා කර ඇති දිවා කාලය යූටීසී (එනම් UNIX_TIMESTAMP ()) බවට පරිවර්තනය කිරීමට දත්ත ගබඩාවට ඉඩ දෙන්න. ඊට පසු ඔබට ඔබේ කේතය තුළ දිවා කාලය UTC ලෙස භාවිතා කළ හැකිය.

ඔබට සේවාදායකය සහ සියලු කේත මත 100% පාලනයක් තිබේ නම්, සේවාදායක කාල කලාපය UTC ලෙස වෙනස් කිරීම වඩා හොඳය.


දිවා කාලයේ ඉතුරුම් සංක්‍රාන්ති කාලය තුළ දේශීය වේලාව (සේවාදායක වේලාව) නොපැහැදිලි විය හැකිය. ඔබ විස්තර කළ පරිදි භාවිතා කිරීම විශ්වාසදායක නොවේ. සේවාදායකයේ දේශීය වේලාව නිරූපණය කළ හැකි UTC වේලාවන් එකකට වඩා තිබිය හැක.
මැට් ජොන්සන්-පින්ට්

සේවාදායකය නිසි කාල කලාපයක පිහිටා තිබේ නම්, එනම් ඩීඑස්ටී නොකරන දේශීය වේලාව හොඳින් ගැලපේ.
sayap
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.