2016-03-31 16 views
3

Ayrıştırma "13:15" kolaydır:"1:15 P.M." nasıl ayrıştırılabilir? NodaTime LocalTime içine?

var pattern = LocalTimePattern.CreateWithInvariantCulture("h:mm tt"); 
var time = pattern.Parse("1:15 pm").Value; 

Ancak bu benzer formlar "01:15 PM", "01:15 PM" veya "01:15 pm ile çalışmıyor "

Am/pm belirtecinin diğer formları için herhangi bir destek var mı, yoksa dize ön işleme ile ele alınması gerekiyor mu?

+0

FYI - BCL diğer formları da desteklemiyor. –

+0

@JamesWorld DateTime.Parse aslında "PM" yi destekliyor, ancak "p.m." yi desteklemiyor. veya "s." – scott

+0

İlk olarak dize gibi istemediğiniz değerleri değiştirerek dizgiyi değiştirin s = timestring.replace ("PM", "PM"). Değiştirin ("pm", "PM") ve benzeri – rashfmnb

cevap

5

İlk olarak, "1:15 PM" sürümü zaten çalışmalı - bu benim için geçerli.

"P.M" veya "p.m" ye izin vermek isterseniz. Uygun AM/PM işaretleyicileriyle bir kültür oluşturmanız gerekir. Bunu yapmak kolay yeter: pm ve amdeğil eser olacak, bu noktada o, Ancak

using System; 
using System.Globalization; 
using NodaTime.Text; 
using NodaTime; 

class Program 
{ 
    static void Main() 
    { 
     var culture = (CultureInfo) CultureInfo.InvariantCulture.Clone(); 
     culture.DateTimeFormat.AMDesignator = "a.m."; 
     culture.DateTimeFormat.PMDesignator = "p.m."; 
     string text = "1:15 P.M."; 
     var pattern = LocalTimePattern.Create("h:mm tt", culture); 
     var value = pattern.Parse(text).Value; 
     Console.WriteLine(value); 
    } 
} 

not - Her iki biçimde ele gerekiyorsa, birden çok model oluşturmak ve görmek gerekir hangi Bir (varsa) metni başarıyla ayrıştırır.

İlgili konular