Czy istnieje standardowy format daty/czasu, który można przekazać do adresu URL?


Patrząc na dokumentację DateTimeformatinfo, wydaje się, że wszystkie standardowe formaty mają w nich dwukropek, co czyni je w URL nieprzyjemne/niemożliwe.
Czy istnieje znormalizowany format wysyłania datetime na adres URL, korzystnie taki, który może być automatycznie analizowany .NET?

Aktualizacja:

małe wyjaśnienie
Odbiorcą tych danych będzie jakaś usługa internetowa - będzie to albo prosty GET HTTP z tą wartością w ciągu żądania, albo REST z wartością gdzieś w adresie URL.
ISO 8601
http://en.wikipedia.org/wiki/I ... tions
reguluje formatowanie daty/czasu i zgodnie z artykułem wiki, użycie
ToString ("yyyyMMddTHHmmssZ")
powinno być co najmniej zgodne ze standardami. Niestety nie jest pobierany automatycznie przez ASP.NET MVC (jeszcze niczego nie próbowałem). Tak czy inaczej, ASP.NET MVC również nie konwertuje automatycznie Tiki na datetime, co mnie zaskoczyło.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Połączę to wszystko w jedną odpowiedź:
Możesz zrobić coś takiego:
string urlSafeDateString = HttpServerUtility.UrlTokenEncode(date.ToUniversalTime().ToString(System.Globalization.CultureInfo.InvariantCulture).ToCharArray()); DateTime date = DateTime.Parse(new string(HttpServerUtility.UrlTokenDecode(urlSafeDateString)), System.Globalization.CultureInfo.InvariantCulture).ToLocalTime();

Albo możesz zrobić coś takiego:
string urlSafeDateString = date.ToUniversalTime().ToString("yyyyMMddTHHmmss", System.Globalization.CultureInfo.InvariantCulture); DateTime date = DateTime.ParseExact(urlSafeDateString, "yyyyMMddTHHmmss", System.Globalization.CultureInfo.InvariantCulture).ToLocalTime();
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak. ISO 8601
http://en.wikipedia.org/wiki/ ISO_8601
http://en.wikipedia.org/wiki/ISO_8601
Tylko upewnij się, że używasz go do pracy z dwukropkami.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Prawdopodobnie nie jest to część żadnego standardu ani czegoś takiego, ale zawsze możesz użyć Uniksa

timestamp,
http://en.wikipedia.org/wiki/Unix_timestamp
ponieważ zawierają tylko liczby. Cm.

Ten artykuł
http://codeclimber.net.nz/arch ... .aspx
o sposobach konwertowania go na .NET DateTime.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W rzeczywistości mamy decyzję o tworzeniu raportów, w których daty i czas mogą być przesyłane jako proste wartości tekstowe
CCYymMDD
i
HHMMSS
, a następnie, gdy kod potrzebuje czegoś do zrobienia Dzięki tym wartościom po prostu używa operacji ciągów, aby obrócić je z powrotem do formatu, który może być wyświetlany lub łatwo analizowany (na przykład formaty DB2 ISO CCYY-MM-DD lub HH.MM.SSSS).
Wynik jest czytelny i byłbym zdziwiony, gdyby .NET nie miał instrukcji manipulacji na ciągach znaków, które mogłyby to zrobić łatwo.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj

HttpServerUtility.HtmlEncode
http://msdn.microsoft.com/en-u ... .aspx
i

HttpServerUtility.HtmlDecode
http://msdn.microsoft.com/en-u ... .aspx
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli chcesz datę i godzinę, użyłbym

DateTime.Ticks
http://msdn.microsoft.com/en-u ... .aspx
.
Jeśli chcesz tylko datę, użyj

HttpServerUtility.UrlEncode (date.ToShortDateString())
http://msdn.microsoft.com/en-u ... .aspx
.
Aktualizacja: Rick Strahl omawiał już ten problem i zasugerował rozwiązanie w

Twój blog
http://www.west-wind.com/weblog/posts/324917.aspx
.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak czy inaczej, ASP.NET MVC również nie konwertuje automatycznie Tiki na datetime, co mnie zaskoczyło.

Istnieje konstruktor dla DateTime, który akceptuje liczbę taktów:
DateTime d = new DateTime(634028202671420663);

Istnieje również nadpisanie, które umożliwia mapowanie go na czas lokalny lub UTC. Wszystko to jest w dokumentach:

http://msdn.microsoft.com/en-us/ library/system.datetime.datetime.aspx
http://msdn.microsoft.com/en-u ... .aspx

Edit:

zrozumiałem ze sformułowania postu, że być może mówisz o ASP, która automatycznie konwertuje Tiki na DateTime, a nie o konieczności czytania parametru numerycznego. Może! :-)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Właśnie napotkałem ten sam problem i rozwiązałem go za pomocą następującej metody pomocniczej:
private string Encode(DateTime date)
{
var formattedDate = date.ToString("yyyy-MM-ddTHH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);
return WebUtility.UrlEncode(formattedDate);
}

Po użyciu danych wyjściowych w parametrze żądania adresu URL wartość jest prawidłowo deserializowana przez .NET do obiektów DateTime przekazanych do mojej usługi interfejsu API sieci Web.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się