Савладајте основне концепте за манипулисање датумима и временом у вашим Руст пројектима.
Руковање датумом и временом је кључни аспект многих апликација, од планирања задатака и анализе података до извођења прорачуна и обезбеђивања представљања података.
Руст има много библиотека и модула за рад са датумима и временима. Руст обезбеђује уграђену време сандук за операције везане за време, а Цхроно библиотека сарађује са многим другим Руст библиотекама за операције датума и времена.
Почетак рада са датумом и временом у Руст-у
Цхроно је библиотека датума и времена за обраду датума, времена, временских зона и трајања у Русту. Цхроно пружа више функција и интуитиван АПИ за типове датума и времена, временске зоне и померање датума и времена, трајање и интервал, рашчлањивање и форматирање и рад са календарима.
Цхроно се добро игра са другим библиотекама у Руст екосистему и неприметно се интегрише са стандардом И/О особине библиотеке које вам омогућавају да читате и пишете Цхроно вредности датума и времена од и до разних потоци.
Поред тога, Цхроно има подршку за серијализацију и десериализацију путем Серде сандук, што олакшава рад са Цхроно типовима у ЈСОН, ИАМЛ и другим форматима. Интеграција Цхроно-а са Серде-ом чини га погодним за операције датума и времена док прављење веб апликација у Русту.
Можете да користите Цхроно да бисте преузели своју локацију УТЦ (координисано универзално време) за бројне операције као што су конверзије.
Додајте ову директиву у зависности одељак вашег Царго.томл датотеку за инсталирање и коришћење цхроно сандук:
[зависности]
цхроно = "0.4.24"
Након инсталирања цхроно сандук, можете користити цхроно у вашем Руст пројекту увозом сандука на следећи начин:
користити цхроно:: прелуде::*;
Цхроно је један од Руст сандука који ће вам требати у вашем развојном арсеналу јер пружа већину функција за операције датума и времена.
Временске зоне и управљање временом у Руст са Цхроно-ом
Временске зоне обезбеђују да су временске ознаке и информације у вези са временом тачне и доследне на различитим географским локацијама. Док радите са подацима који се односе на време, неопходно је узети у обзир временске зоне како бисте спречили нејасноће и нетачности. Операције као што су поређење временских ознака, израчунавање трајања или заказивање догађаја без правилног руковања временском зоном могу дати неочекиване резултате.
Можете да конвертујете између временских зона помоћу Цхроно-а. Ево примера претварања а Датум време из једне временске зоне у другу:
користити цхроно::{ДатеТиме, Утц, Лоцал, ТимеЗоне};
фнцонверт_тимезоне() {
дозволити утц_тиме: Датум и време= Утц:: сада();
дозволити локално_време: Датум и време= утц_тиме.витх_тимезоне(&Лоцал);
принтлн!(„УТЦ време: {}“, утц_тиме);
принтлн!("Локално време: {}", Локално време);
}
Тхе цонверт_тимезоне функција преузима тренутни УТЦ са Утц:: сада метод, претвара УТЦ у локалну временску зону помоћу витх_тимезоне метод који се позива на Локални струцт и враћа а Датум време објекат који представља исту тачку у времену али у локалној временској зони.
Када позовете цонверт_тимезоне функција, штампаће УТЦ и локално време на конзоли.
Поред тога, Цхроно пружа погодне методе и функционалности за летње рачунање времена (ДСТ) и померања временске зоне. У вашем систему, можете подесите сат за летње рачунање времена преко апликације Подешавања или контролне табле.
Ево примера који приказује Цхроно могућности са ДСТ и временским померама:
користити цхроно::{ДатеТиме, Утц, ФикедОффсет};
фнхандле_дст() {
дозволити утц_тиме: Датум и време= Утц:: сада();
дозволити ни_тимезоне = ФикедОффсет:: еаст(5 * 3600);
// Источно летње време (ЕДТ) УТЦ-4:00дозволити ни_тиме: Датум и време
= утц_тиме.витх_тимезоне(&ни_тимезоне);
принтлн!(„УТЦ време: {}“, утц_тиме);
принтлн!(„Њујоршко време: {}“, ни_тиме);
}
Тхе хандле_дст функција приступа тренутном времену помоћу Сада метод и преузима време у Њујорку док рачуна време помака са ФикедОффсет:: исток методом.
Позивањем на витх_тимезоне функцију, конвертујете УТЦ у временску зону Њујорка. Цхроно обрађује подешавања времена у складу са одговарајућим ДСТ и враћа а Датум време објекат.
Када користите ДСТ, кључно је запамтити да се прелази на ДСТ дешавају у одређеним датумима и временима. Цхроно'с Датум време струцт је опремљена да рукује овим прелазима и обезбеди тачне приказе времена у различитим временским зонама.
Израчунавање трајања и интервала
Трајање је време независно од било које одређене тачке у времену. Можда ћете морати да израчунате трајање између два догађаја, измерите протекло време или додате или одузмете одређени износ од одређеног времена.
Руст стандардна библиотека време сандук пружа свеобухватне алате за ефикасно руковање дужинама.
Ево како можете да измерите време извршавања функције помоћу време сандук:
користити цхроно::{ДатеТиме, Утц};
користити стд:: тиме:: Инстант;фнглавни() {
дозволити старт = Инстант:: сада();// Извршити неку операцију
// ...дозволити крај = Инстант:: сада();
дозволити трајање = енд.дуратион_синце (почетак);
принтлн!("Протекло време: {:?}", трајање);
}
Тхе главни функција преузима тренутно време са Инстант метод уграђеног време сандук. Након операције, главни функција преузима време у том тренутку и процењује разлику са трајање_од функцију пре штампања временске разлике на конзоли.
Серијализација и десериализација: Конвертовање ЈСОН датума и времена у Руст структуре користећи Цхроно
Серијализација и десеријализација вредности датума и времена из ЈСОН-а користећи Цхроно и Серде је једноставан процес. Прво додајте серде и серде_јсон сандуке према зависностима вашег пројекта.
[зависности]
серде = {верзија = "1.0", карактеристике = ["извести"] }
серде_јсон = "1.0"
Затим ћете морати да дефинишете тип Руст и примените #[дериве (Сериализе, Десериализе)] атрибути за тип где ћете навести тип података:
користити цхроно::{ДатеТиме, Утц};
#[дериве (Сериализе, Десериализе)]
струцтСастанак {
старт_тиме: Датум и време,
енд_тиме: Датум и време,
}
Можете серијализирати Састанак струцт у ЈСОН са Серде-ом уз Цхроно могућности форматирања.
Ево како можете да конвертујете инстанцу Састанак откуцајте у ЈСОН:
користити серде_јсон:: то_стринг;
фнглавни() {
дозволити састанак = Састанак {
старт_тиме: Утц:: сада(),
енд_тиме: Утц:: сада(),
};
дозволити јсон = то_стринг(&меетинг).унврап();
принтлн!("{}", јсон);
}
Тхе главни функција ствара а Састанак инстанце са тренутним УТЦ за поља пре употребе то_стринг функцију за претварање инстанце структуре у ЈСОН стринг одштампан на конзоли.
Можете лако да десериализујете ЈСОН податке о датуму и времену у структурни тип помоћу серде_јсон фром_стр функција која узима ЈСОН стринг и враћа инстанцу структуре.
користити серде_јсон:: фром_стр;
фнглавни() {
дозволити јсон = р#"{"старт_тиме": "2023-05-28Т12:00:00З", "енд_тиме": "2023-05-28Т14:00:00З"}"#;
дозволити састанак: Састанак = фром_стр (јсон).унврап();
принтлн!("{:#?}", састанак);
}
Тхе главни функција десеријализује ЈСОН стринг из јсон променљива у састанак инстанца оф тхе Састанак струцт пре штампања инстанце структуре на конзоли.
Можете да правите софистициране апликације са Руст-ом
Робусност, једноставност коришћења и широка функционалност Цхроно-а чине га незаменљивим алатом за руковање датумима, временима, трајањем и интервалима ваших апликација. Можете да обезбедите прецизне прорачуне времена, ефикасно планирање и поуздане операције у вези са датумом користећи Цхроно могућности.
Један кључни случај употребе Цхроно-а је у изради веб апликација. Можете да користите Цхроно за евиденцију времена активности, мерење времена активности корисника и друге веб операције.