Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Cum as putea converti o data din orice posibil format intr-un format dat.
Last Updated: Nov 11 2021 00:50, Started by
ursudepadure
, Oct 31 2021 21:48
·
0
#1
Posted 31 October 2021 - 21:48
Exista diferite formate pentru data, cele mai populare fiind:
"dd/MM/yyyy", "dd MMMM yyyy" , "dd mm yyyy" Sa fac conversia dintr-un format dat in altul e este simplu: private string convertus(string posibledate) // THIS FUNCTION CONVERT FOR US FORMAT { string stringDate = posibledate; var dt = DateTime.ParseExact(stringDate, "MMMM dd yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); return dt; } Asadar fiind format US pentru azi va fi October 31 2021 convertita in 10/31/2021, merge brici. Totul e OK dar trebuie sa stiu dinainte formatul datei , ca in cazul de sus. Eu am insa o lista cu diferite formate, poate fi unul din cele din area de stringuri de mai sus sau altele acceptate. Cum as putea sa fac conversia in formatul "MM/dd/yyyy" din orice format posibil ?' Ca sa determin daca este US sau GB am facut asa: private bool isGbDate(string posibledate) // testeaza daca e EU format (GB, ca trebuie sa fie in engleza). { string[] formats = { "dd/MM/yyyy", "dd MMMM yyyy" , "dd mm yyyy" }; string dateTime = posibledate; DateTime parsedDateTime; if (DateTime.TryParseExact(dateTime, formats, new CultureInfo("en-GB"), DateTimeStyles.None, out parsedDateTime) == false) { return false; } // it is the place where I write the code for the other culture else { return true; } } private bool isUsDate(string posibledate) //Testeaza daca e US format { string[] formats = { "MM/dd/yyyy", "MMMM dd yyyy", "yyyy mm dd" }; string dateTime = posibledate; DateTime parsedDateTime; if (DateTime.TryParseExact(dateTime, formats, new CultureInfo("en-US"), DateTimeStyles.None, out parsedDateTime) == false) { return false; } // it is the place where I write the code for the other culture else { return true; } } Ma gandea sa aplic aceeasi figura si la conversie: string[] formats = { "MM/dd/yyyy", "MMMM dd yyyy", "yyyy mm dd" }; // POT FI MULT MAI MULTE ASTA NU E O PROBLEMA var dt = DateTime.ParseExact(stringDate, formats, CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); in loc de cazul particular : var dt = DateTime.ParseExact(stringDate, "MMMM dd yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); Se pare ca nu merge. As putea sa fac ditamai functia sa imi determine ce format este din cateva mai "populare" dar poate exista o cale mai simpla, cum ar fi sa am un area de stringuri ca mai sus. Ar putea cineva sa imi dea un sfat? |
#2
Posted 31 October 2021 - 22:45
Trebuie impus un standard de intrare. Niciodata nu vei sti daca 03/04/2021 este 3-Apr-21 sau 4-Mar-21.
|
#3
Posted 31 October 2021 - 22:47
Nu ma pricep la cod, dar atat cat ma pricep: de ce ai face asta?
Vrei sa-ti recunoasca secventa ta data dintr-un text sau vrei ca, daca utilizatorii unui tabel template tasteaza data in orice format, tabelul sa converteasca la formatul dorit de tine? LukRo, on 31 octombrie 2021 - 22:45, said:
Trebuie impus un standard de intrare. Niciodata nu vei sti daca 03/04/2021 este 3-Apr-21 sau 4-Mar-21. Dar inca nu stim ce vrea colegul. Cred ca simpla pozitionare a cursorului pe campul respectiv, sau tastarea unui format nerecunoscut sa genereze un pop up cu instructiuni asupra formatului. Edited by viotl, 31 October 2021 - 22:49. |
#4
Posted 31 October 2021 - 23:07
ursudepadure, on 31 octombrie 2021 - 21:48, said:
Exista diferite formate pentru data, cele mai populare fiind: "dd/MM/yyyy", "dd MMMM yyyy" , "dd mm yyyy" Sa fac conversia dintr-un format dat in altul e este simplu: DateTimeFormatInfo https://docs.microso...fo?view=net-5.0 https://docs.microso...otnet-framework Edited by MarianG, 31 October 2021 - 23:08. |
#5
Posted 01 November 2021 - 09:33
Am niste articole stiintificce. Am resusit sa creez un folder cu prima pagina a fiecarui articol care contine data in care au fost pulished,, submitted sau received, Aceste data sunt mult mai aproape de "adevar" decat metadata care contine "date of creation" (fisierele cu articole erau pdf). Ca sa nu o lungesc cel cu care lucrez vera sa faca niste cercetari si printere altele are nevoie de aceste date pentru un grafic.
Ce am obtinut eu e ceva de genul: 2016 10 03 00000000 00000000 29 APRIL 2015 6 NOVEMBER 2013 24 FEBRUARY 2015 12 34 1999 2000-12-11 00000000 inseamna ca nu am gasit date in fisier si nu am avut ce extrage. Eventual acolo sa introduc metadata cu "date of creation" sau cum o vrea el. Am reusit sa detectez cu codul de mai sus daca data este US sau EU. Dar fiecare autor a pus data cum l-a taiat capul. Unii din US altii din EU cu toate formatele posibile desi predomina "dd MMM yyyy". Mie mi se cere ca pentru fiecare fisier data sa fie reprezentata la fel pentru ca pe grafic, pe abscina nu pot aparea tot felul de formate ca nu da bine. Va trebui sa fie un singur format, cat mai simplu, eventual yyyy,dd,mm Datele respective sunt acum intr-un fisier text. Este de fapt o singura coloana cu cateva mii de valori. Adica date reprezentate in diferite formate. Cum functia de convertire presupune sa stiu cum arata data pe caz general(nu pot sa o introduc direct) atunci eu trebuie sa fac ceva sa transform sa zicem stringul "01 february 2021" in stringul "dd MMM yyyy", Pentru a afla daca este US sau EU am putut introduce din start toate formatele posiblle sum se vede mai sus (nu sunt toate dar pot sa mai adaug tot ce exista, Cred ca va trebui sa scriu o functie. Am idee deja cum sa o fac dar e mult de scris. LukRo, on 31 octombrie 2021 - 22:45, said:
Trebuie impus un standard de intrare. Niciodata nu vei sti daca 03/04/2021 este 3-Apr-21 sau 4-Mar-21. if (DateTime.TryParseExact(dateTime, formats, new CultureInfo("en-GB"), DateTimeStyles.None, out parsedDateTime) == false) Poate fi desigur orice limba. Atunci eu stiu daca 3-Apr-21 sau 4-Mar-21 este EU sau US. GB in cazul asta inseamna Great Britain. Daca era "fr-FR", era franceza. Deci nu exista dubii in privinta asta. Doar ca nu pot sa fac conversia daca nu stiu formatul pe caz general. var dt = DateTime.ParseExact(stringDate, "MMMM dd yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); va converti orice dafa din formatul de sus, cum ar fi November 01 2021 in 11/01/2021. Sa inversez apoi cel american cu cel european stiu sa fac odata ce am datele. Ma apuc acum sa scriu o functie, am niste idei, sa vad ce va iesi. Edited by ursudepadure, 01 November 2021 - 09:35. |
#6
Posted 01 November 2021 - 09:58
Pe scurt: in loc de cazul particular:
var dt = DateTime.ParseExact(stringDate, "MMMM dd yyyy", CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); Sa am ceva care sa cuprinda toate formatele, sau care cred eu ca imi sunt mai utile (in articole nu am gasit cele in care anul apare din doua cifre). var dt = DateTime.ParseExact(stringDate, diferiteformate, CultureInfo.InvariantCulture).ToString("MM/dd/yyyy"); string[] diferiteformate = { "MM/dd/yyyy", "MMMM dd yyyy", "yyyy mm dd", ...cate vreau eu ... } desigur data extrasa care trebuie convertita se alfa in stringul numit stringDate in aceasta instructiune, dar instructiunea asta nu stie sa ii extraga formatul pe caz general. |
#7
Posted 01 November 2021 - 10:56
Pai daca unii din US si altii din EU, vezi manual cine si unde a publicat.
Altfel munca de cercetare n-ar fi frumosa. Ai indoieli pentru datele care au atat luna cat si ziua sub 13, daca ai 12/13 sau 13/10 iti dai seama care si ce reprezinta. |
#8
Posted 03 November 2021 - 01:27
MarianG, on 01 noiembrie 2021 - 10:56, said:
Pai daca unii din US si altii din EU, vezi manual cine si unde a publicat. Altfel munca de cercetare n-ar fi frumosa. Ai indoieli pentru datele care au atat luna cat si ziua sub 13, daca ai 12/13 sau 13/10 iti dai seama care si ce reprezinta. Este foarte usor sa testezi (ceva if-uri pe acolo) daca e intr-o anumita limba sau alta asa cum am afisat codul de mai sus. Eu acuma sunt frustrat ca nu pot sa inlocuiesc direct cazurile generale cu cele partirulare. Evident e clar ca poti sa scrii o functie. Acuma, depinde de cel cu care lucrez, daca este o prioritate. Am o idee dar nu stiu daca o sa fie cea mai buna. Daca da, atunci raspund singur la intreabarea pe care am eu am intrebat-o. Suna ciudat... |
#9
Posted 03 November 2021 - 01:50
Nu vad prea mult "feed back". (asta e o englezoromana cumplita, dar nu stiu cum sa ii zic). Ce nu au inteles unii, este ca aici este vorba de mii de fisiere, nu doar cate unul. Eu fac un "loop" prin care trec toate fisierele dintr-un folder. Pot fii de ordinul miilor.
Asta nu conteaza. Eu am extras toate datele (adica in limba romana ma refer la timp) acolo unde existau inaintea unor cuvinte care m-au ajutat ca niste tags in html. Problema mea este doar conversia.. Este interesant ca am gasit o functie care stie daca un string este sau nu o data calendaristica (daca nu iti da un mesaj ca nu e Gregorian ). Si cum vedeti mai sus poate sa "zica" daca e US sau GB. Dar merge pentru orice limba. Sa fiu cinstit am ramas uimt ca MS a facut asta pentru developers. |
#10
Posted 03 November 2021 - 09:02
Articolele stiintifice (de regula) au o noima; in cazul tau, conseventa formatului de afisare a datelor calendaristice.
Tu trebuie doar sa te decizi daca pentru documentul in cauza este zi/luna sau luna/zi. Daca aceste date calendaristice deja sunt extrase, "basically, you're screwed". |
|
#11
Posted 07 November 2021 - 20:50
MarianG, on 03 noiembrie 2021 - 09:02, said:
Articolele stiintifice (de regula) au o noima; in cazul tau, conseventa formatului de afisare a datelor calendaristice. Tu trebuie doar sa te decizi daca pentru documentul in cauza este zi/luna sau luna/zi. Daca aceste date calendaristice deja sunt extrase, "basically, you're screwed". |
#12
Posted 09 November 2021 - 22:46
Pana la urma am dres-o. Nu chiar de tot, mai sunt formate buclucase. Dar cam 99.9 %. Daca cineva are nevoie poate ca il ajuta.
// DATELE EXTRASE "BARBAR" DUPA DIFERITE CRITERII, DIN FISIERE TEXT (REZULTATE DIN PDF) // INTRODUSE IN FISIERUL TEXT "extractedateonly.txt", DACA NU EXISTA DATA DE EXTRAS, PUNE 0000.00.00 string textfile = @"C:\wf\ExtractedMD\extractedateonly.txt"; string[] dates = File.ReadAllLines(textfile); // FIECARE LINIE DIN FISIER E O DATA IN ACEST CAZ IN AREA NUMITA dates string[] formattedDates = new string[dates.Length]; string[] formats = { "M/d/yyyy", "d/M/yyyy", "M-d-yyyy", "d-M-yyyy", "d-MMM-yy", "d-MMMM-yyyy", "d MMMM yyyy", "MMMM d yyyy", "d M yyyy" , "d M yyyy", "yyyy M d", "dth M d", "M d yyyy" , "yyyy MM d","yyyy MM dd", "yyyy MMMM d", "MMM dd yyyy"}; for (int i = 0; i < dates.Length; i++) { DateTime date; if (DateTime.TryParseExact(dates[i], formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) { formattedDates[i] = date.ToString("yyyy.MM.dd"); } // DE FORMATUL ASTA E NEVOIE else { formattedDates[i] = date.ToString("0000.00.00"); } // DACA NU EXISTA DATA EXTRASA File.AppendAllText(@"C:\wf\ExtractedMD\dataconverted.txt", formattedDates[i]+"\n"); } Problema este ca nu gasesc ceva pentru date de genul: 3TH NOV 2012. E clar ca MMMM e luna scrisa lung, MMM pe scurt, MM ca si numar, etc...sunt niste reguli. Nu am gasit inca aceea cu "th dar, poate nu am cautat destul. |
#14
Posted 11 November 2021 - 00:50
MarianG, on 10 noiembrie 2021 - 06:53, said:
nu exiata 3TH ci 3rd Acum am trecut la altceva dar va trebui sa revin la asta, atata timp cat sunt date in formatul asta. Desigur ca pot face o functie, dar e mult de scris, as fi fost bucuros sa existe formatul asta.... Well, am vazut ca aici e o intreaga teorie cu datele. Eu am nimerit-o dar probabil ca se pot face multe lucruri fara sa te apuci sa scrii functii de nebun. |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users