2015-03-19 3 views
1

Мне нужно показать даты, как показано ниже. (Даты указаны на испанском языке)показать прошлую и будущую дату asp.net C#

Lunes 16 de marzo | Мартес 17 de marzo | Miércoles 18 de marzo | Jueves 19 de marzo | Viernes 20 de marzo 20

Мне нужно отобразить 5 дат, а третья дата в группе должна быть сегодня.

Кто-нибудь знает, с чего начать?

+5

Посмотрите на '' DateTime.Today' и DateTime.AddDays() ' –

ответ

0

Здесь, комментарии инлайн:

using System; 
using System.Linq; 
using System.Text; 
using System.Globalization; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     // slecting locale 
     var ci = new CultureInfo("es-ES"); 

     // use a StringBuilder for storing the processed text 
     var sBuilder = new StringBuilder(); 

     // use an Enumerable 
     Enumerable.Range(-2, 5) 
      // get date range 
      .Select(i => DateTime.Today.AddDays(i)) 
      // get long dates in es-ES and remove "," 
      .Select(i => i.ToString("D", ci).Replace(",", "")) 
      .ToList().ForEach(s => 
      { 
       // capitalize first letter 
       sBuilder.Append(char.ToUpper(s[0])); 
       // remove the year part 
       sBuilder.Append(s.Substring(1, s.LastIndexOf(' ') - 3)); 
       // add delimiter 
       sBuilder.Append("| "); 
      }); 
     // adjust length for removing the final delimiter 
     sBuilder.Length = sBuilder.Length - 2; 

     Console.WriteLine(sBuilder.ToString()); 
    } 
} 
4

Вы можете использовать что-то вроде этого:

DateTime today = DateTime.Now; 
DateTime tomorrow = today.AddDays(1); 
DateTime yesterday = today.AddDays(-1); 

, а затем вы просто форматировать ваш выход так, как вам нужно.

1

В C# вы можете использовать объект DateTime для получения текущего DateTime, а затем использовать методы DateTime для получения предыдущих 2 и последующих 2. AddDay (или AddMinute, Second и т. Д.) DateTime может принимать отрицательное число ,

DateTime myDate = DateTime.Now; 
DateTime prevOne = myDate.AddDays(-1); 
DateTime prevTwo = myDate.AddDays(-2); 
DateTime nextOne = myDate.AddDays(1); 
DateTime nextTwo = myDate.AddDays(2); 

их отображения в порядке prevTwo, prevOne, MyDate, NextOne, nextTwo. Я предполагаю, что ваши региональные настройки заботятся о переводе на испанский.

0

псевдокод:

Declare a string 
For (var i=0; i<5;i++) 
{  
    string += " (today -2 +i) formatted in any way you want " 
} 
Display the string 
1

я бы это сделать где-то вдоль этих линий:

Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES"); 
//Format your date 'de' to get the literal string into the date 
var datestring = "{0:dddd dd 'de' MMMM}"; 

StringBuilder sb = new StringBuilder(); 
//iterate 
for(int x = 0; x < 5; x++) 
{ 
    //build the string 
    sb.Append(String.Format(datestring + " | ", DateTime.Now.AddDays(-2+x))); 
} 
sb.ToString().Dump(); 

Выход:

Martes 17 де Марсо | миэкоторы 18 de marzo | jueves 19 de marzo | vernes 20 de marzo | sábado 21 de marzo

Редактировать: более удобный способ, который избавляется от конечных "|" и отделяет агрегирование данных из презентации:

Thread.CurrentThread.CurrentCulture = new CultureInfo("es-ES"); 

var dateFormat = "dddd dd 'de' MMMM"; 
List<DateTime> dates = new List<DateTime>(); 
for(int x = 0; x < 5; x++) 
{ 
    //push dates into our List 
    dates.Add(DateTime.Now.AddDays(-2+x)); 
} 
//build the output string and format our dates 
String.Join(" | ", dates.Select (d => d.ToString(dateFormat))).Dump(); 
Смежные вопросы