Bir XML dosyasında Tarih / Saat için kullanılacak doğru biçim nedir


98

.NET kullanarak bir XML dosyasına yazarken Tarih / Saat için hangi biçimi kullanırım? Sadece kullanmalı DateTime.ToString()mıyım yoksa belirli bir format mı kullanmalıyım?

Yanıtlar:


138

Ben her zaman ISO 8601 formatını kullanıyorum (örneğin 2008-10-31T15:07:38.6875000-05:00) - date.ToString("o"). Aynı zamanda XSD tarih formatıdır . Bu, tercih edilen biçim ve Standart Tarih ve Saat Biçimi dizesidir , ancak tarih ve saat arasında 'T' olmasını istemiyorsanız gerekirse bir manuel biçim dizesi de kullanabilirsiniz:date.ToString("yyyy-MM-dd HH:mm:ss");

DÜZENLEME: Bir XSD veya Web Hizmetinden oluşturulmuş bir sınıfı kullanıyorsanız, DateTime örneğini doğrudan sınıf özelliğine atayabilirsiniz. XML metni yazıyorsanız, yukarıdakileri kullanın.


44

DÜZENLEME: Bu kötü bir tavsiye. Yukarıdaki gibi "o" kullanın. "s" yanlış şeyi yapıyor .

Ben her zaman şunu kullanırım:

dateTime.ToUniversalTime().ToString("s");

Şemanız şöyle görünüyorsa bu doğrudur:

<xs:element name="startdate" type="xs:dateTime"/>

Bunun sonucu:

<startdate>2002-05-30T09:00:00</startdate>

Buradan daha fazla bilgi edinebilirsiniz: http://www.w3schools.com/xml/schema_dtypes_date.asp


10
Bunun tarihi UTC'ye dönüştürdüğünü unutmayın. Tarihi işlediğinizde, yerel ayara göre mevcut saat diliminize geri dönüştürmelisiniz (her şeyi UTC'de işlemediğiniz sürece). Ayrıca, tarihin UTC olduğunu belirtmek için genellikle sonuna bir 'Z' koyarsınız.
Ryan

soap ui'den .net web hizmetini aradığımda benim için "s" çalışıyor.
Tristan Channing

4

XML dizesini manuel olarak birleştiriyorsanız, var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); That öğesini kullanın. Bu, resmi XML Tarih Saat biçimini verir. Ancak yerleşik serileştirme yöntemlerini kullanıyorsanız format konusunda endişelenmenize gerek yok.


jonnii's temelde aynı sonucu döndürecektir.
chilltemp

3
Bu durumda tüm tarihler UTC saat diliminde OLMALIDIR, aksi takdirde "Z" son ekinin kullanımı yanlıştır.
Fr0sT

Önceki yorumu tekrar edeceğim - dt utc değilse bu aslında yanlıştır.
Brady Moritz

3

DTD'nin söylemesi gereken nedir?

XML dosyası diğer mevcut yazılımlarla (örn., SOAP) iletişim kurmak içinse, o yazılımın beklediğini kontrol edin.

XML dosyası mevcut olmayan bir yazılımla (örneğin yazdığınız yazılım) serileştirme veya iletişim için ise, onu tanımlayabilirsiniz. Bu durumda, hem seçtiğiniz dil (ler) de ayrıştırılması kolay hem de insanlar için okunması kolay bir şey öneririm. Örneğin, diliniz (VB.NET veya C # .NET veya her neyse) ISO tarihlerini (YYYY-AA-GG) kolayca ayrıştırmanıza izin veriyorsa, bunu önereceğim.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.