2012-10-20 19 views
5

Sistem tarih formatım dd-MM-yyyy (20-10-2012) şeklindedir ve tarihi, ayı ve ayı ayırmak için tarihi alıyorum ve ayırıcıyı kullanıyorum. Formatların herhangi bir tarih biçiminde dönüp dönmediği tarih biçimini (dd/MM/yyyy) dönüştürmem gerekiyor. Eğer biçimini biliyorsanız veya değilse ve sistem ayarlarını DateTime.TryParse kullanmak istiyorsanızSistem tarihini alın ve gün, ay ve yılı bölün.

string sDate = string.Empty; 
DateTime _date = DateTime.Now; 
int count = 0; 
string format = "dd-MM-yyyy"; 
sDate = dateFormat.ToString(format); 
string[] Words = sDate.Split(new char[] { '-' }); 
foreach (string Word in Words) 
{ 
    count += 1; 
    if (count == 1) { Day = Word; } 
    if (count == 2) { Month = Word; } 
    if (count == 3) { Year = Word; } 
} 
+1

Yinelenen ait: http: //stackoverflow.com/questions/12985802/im-getting-cultureinfo-invariantculture-format-for-mm-dd-yyyy-but-i-want- to-ge – SearchAndResQ

+4

'DateTime 'nesnesine zaten sahipseniz, neden sadece üzerinde tanımlanan özellikleri kullanamazsınız? 'Year',' Month' ve 'Day' doğrudan size gereken değerleri vermelidir. Daha sonra ulaştığınız veriye ulaşmak için uğraştığınız bir dizeye dönüştürme noktasını göremiyorum. – Oded

+0

@Oded Size tamamen katılıyorum ..... – Ram

cevap

6

Sen DateTime.TryParseExcact kullanmalıdır. Ve tarihte, DateTime.ToString argümanında doğru formatı yazdırmak için. Yıl, ay veya günü almak için DateTime.Year, DateTime.Month veya DateTime.Day.

Ek başvurular için MSDN'de DateTime Structures konusuna bakın. Sen takip gibi yapabilirsiniz

+2

+1 Kendi tarih/saat işlem kodunuzu kullanmayın. –

11

: Beynimi kontrol etmek için bir IDE açmadan size sütunu kullanabilirsiniz datetime yerine üzerinde

String date = DateTime.Now.Date.ToString(); 
    String Month = DateTime.Now.Month.ToString(); 
    String Year = DateTime.Now.Year.ToString(); 

..

+0

Örneğinizde, bazı günlerde gece yarısına çok yakın bir yarış durumu var. –

1

günün bu saatinde sözdizimi için sorunsuz çalışan ...

Sadece belirli bir biçimde tarih istiyorsanız, DateTime's .ToString(string format)'u kullanabilirsiniz. Bu bağlantıyı izlerseniz, standart ve özel biçimlendirme dizelerinin birkaç örneği vardır.

Yani

DateTime _date = DateTime.Now; 
var _dateString = _date.ToString("dd/MM/yyyy"); 

size talep biçiminde bir dize olarak tarih verecekti. İşte

15

Aradığınız şudur:

String sDate = DateTime.Now.ToString(); 
DateTime datevalue = (Convert.ToDateTime(sDate.ToString())); 

String dy = datevalue.Day.ToString(); 
String mn = datevalue.Month.ToString(); 
String yy = datevalue.Year.ToString(); 

VEYA

Alternatif olarak, burada split string date into day, month and year için bölünmüş işlevini kullanabilirsiniz.

Umut, size yardımcı olacaktır ... Şerefe. !! aşağıdaki gibi

+0

Kaba olmak istemiyorum, ancak kod snippet'inizin ne yaptığını biliyor musunuz? Neden bir DateTime nesnesi oluşturuyorsunuz ve ToString() öğesini iki kez çağırıyorsunuz ve bunu DateTime'a dönüştürüyoruz, böylece ToString() öğesini üçüncü kez arayabilirsiniz. Tek ihtiyacınız olan DateTime dateValue = DateTime.Now; –

+0

@BojidarStanchev Değerli olduğum gibi tarih dizgisi kullanıcı tarafından sorulan bir girdi (DateTime nesnesi olsa da). Yani bu sadece kullanım durumu için. Kullanıcıları çalışma zamanında farklı kültür formatlarıyla rahatsız etmek istemedim. Yani bu sadece temel bir kuraldı. Ana amaç, Gün, Ay, Yıla kolayca tarih dizesinden nasıl ayrılacağını göstermekti! –

3

Geçerli tarihten itibaren ay yıl tarihini bölebilirsiniz:

DateTime todaysDate = DateTime.Now.Date;

Gün:

int day = todaysDate.Day;

Ay:

int month = todaysDate.Month;

Yıl:

int year = todaysDate.Year;

İlgili konular