2015-02-04 1 views
-4

У меня есть этот код, который показывает некоторую информацию сборки в качестве О коробке:Каков самый чистый способ лишить ведущие 0s от дневной части дат?

private void frmAbout_Load(object sender, EventArgs e) 
{ 
    Version versionInfo = 
     Assembly.GetExecutingAssembly().GetName().Version; 
    lblVersion.Text = String.Format("Version {0}.{1}", 
     versionInfo.Major.ToString(), versionInfo.Minor.ToString()); 
    String versionStr = String.Format("{0}.{1}.{2}.{3}", 
     versionInfo.Major.ToString(), versionInfo.Minor.ToString(), 
     versionInfo.Build.ToString(), versionInfo.Revision.ToString()); 
    lblBuild.Text = String.Format("Build {0}", versionStr); 

    DateTime startDate = new DateTime(2000, 1, 1); // The date from 
     whence the Build number is incremented (each day, not each 
     build; see http://stackoverflow.com/questions/27557023/how-can- 
     i-get-the-build-number-of-a-visual-studio-project-to-increment) 
    int diffDays = versionInfo.Build; 
    DateTime computedDate = startDate.AddDays(diffDays); 
    lblLastBuilt.Text += computedDate.ToLongDateString(); 
} 

Он появляется, как это сегодня:

enter image description here

«Проблема» является то, что экран недвижимость ограничена, и такие даты, как «4 февраля 2015 года», выглядят мне неистово (я предпочитаю «4 февраля 2015 года»).

я мог kludgily грубой силой строки, возвращаемой из ToLongDateString() как так:

String lds = computedDate.ToLongDateString(); 
lds = // find leading 0 in date and strip it out or replace it with an empty string 
lblLastBuilt += lds; 

(я использую «+ =», потому что lblLastBuilt установлен на «Последний построен» на время разработки.

Итак: есть менее грубый forcish способ предотвратить ведущие 0s появляться в «день месяца» части строки даты

+2

DateTime имеет много существующих (например, использование ToLongDateString()) и пользовательское форматирование. Вы пробовали кого-нибудь из них, чтобы узнать, соответствует ли это вашим потребностям? – Quintium

+2

Вы также можете избавиться от дня недели, пока вы на нем! –

+0

Я хочу день недели. –

ответ

6

Используйте пользовательский формат (MMMM d, yyyy)

?.
String lds = computedDate.ToString("MMMM d, yyyy", CultureInfo.InvariantCulture); 

single d предоставит вам одну или двухзначную дневную часть. Если часть дня меньше 10, вы получите только одну цифру вместо ведущего 0, для других вы получите две цифры.

См: Custom Date and Time Format Strings

Я предпочитаю «4 февраля 2015»

EDIT: Я пропустил часть на день недели, я не уверен, что вам нужно ли это или нет, но если вы должны, то вы можете добавить dddd в пользовательском формате, как:

dddd, MMMM d, yyyy 
1

Попробуйте это:

computedDate.ToString("dddd, MMMM d, yyyy"); 

Он выдает, например. «Среда, 4 февраля 2015 года» с использованием custom date format.

Смежные вопросы