显示过去和未来的日期asp.net c#

时间:2015-03-19 20:47:37

标签: c# asp.net datetime c#-4.0

我需要显示如下日期。 (日期是西班牙语)

  

Lunes 16 de marzo | Martes 17 de marzo | Miércoles18de marzo | Jueves 19 de marzo | Viernes 20 de marzo 20

我需要显示5个日期,组中的第三个日期必须是今天。

任何人都知道如何开始?

5 个答案:

答案 0 :(得分:4)

您可以使用以下内容:

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

然后您只需按照需要格式化输出。

答案 1 :(得分:1)

在C#中,您可以使用DateTime对象获取当前的DateTime,然后使用DateTime的方法获取前一个和下一个2. DateTime的AddDay(或AddMinute,Second等等)可以采用负数。

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的顺序显示它们。我假设您的区域设置正在处理翻译为西班牙语。

答案 2 :(得分: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 de marzo | miércoles18de marzo | jueves 19 de marzo |   viernes 20 de marzo | sábado21de 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();

答案 3 :(得分:0)

伪代码:

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

答案 4 :(得分: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());
    }
}