Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取给定日期的前三个日期.net_C#_Asp.net - Fatal编程技术网

C# 如何获取给定日期的前三个日期.net

C# 如何获取给定日期的前三个日期.net,c#,asp.net,C#,Asp.net,我想从当前日期中获取3个日期,或者如果用户输入类似于2011年7月16日的日期,我想显示这类日期之前的3个日期 2011年7月15日、2011年7月14日、2011年7月13日简单步骤: 将日期解析为DateTime。如果您知道要使用的格式,我建议使用DateTime.ParseExact或DateTime.TryParseExact 使用DateTime.AddDays(-1)获取上一个日期(使用与原始日期不同的值,或始终使用-1,但每次使用“新”日期) 例如: string text =

我想从当前日期中获取3个日期,或者如果用户输入类似于2011年7月16日的日期,我想显示这类日期之前的3个日期

2011年7月15日、2011年7月14日、2011年7月13日

简单步骤:

  • 将日期解析为
    DateTime
    。如果您知道要使用的格式,我建议使用
    DateTime.ParseExact
    DateTime.TryParseExact
  • 使用
    DateTime.AddDays(-1)
    获取上一个日期(使用与原始日期不同的值,或始终使用-1,但每次使用“新”日期)
例如:

string text = "16/07/2011";

Culture culture = ...; // The appropriate culture to use. Depends on situation.
DateTime parsed;
if (DateTime.TryParseExact(text, "dd/MM/yyyy", culture, DateTimeStyles.None,
                            out parsed))
{
    for (int i = 1; i <= 3; i++)
    {
         Console.WriteLine(parsed.AddDays(-i).ToString("dd/MM/yyyy"));
    }
}
else    
{
    // Handle bad input
}
string text=“16/07/2011”;
区域性=…;//要使用的适当文化。视情况而定。
解析的日期时间;
if(DateTime.TryParseExact(文本,“dd/MM/yyyy”),区域性,DateTimeStyles.None,
外解析)
{

对于(int i=1;i只需使用
TimeSpan
对象或
AddDays
函数即可。以下是可以轻松修改天数的扩展方法示例:

    public static DateTime SubtractDays(this DateTime time, int days)
    {
        return time - new TimeSpan(days, 0, 0, 0);
    }

    public static DateTime SubtractDays(this DateTime time, int days)
    {
        return time.AddDays(days)
    }

我收回了我之前的评论,因为我认为这毕竟是可以的,因为DateTime的工作方式,但一般来说,你应该注意减去“一天”和减去“24小时”之间的区别——它们并不总是一样的,因为不是所有的天都有24小时(DST转换)。第一个和第二个实现不匹配。在第二个示例中,您应该否定天数,否则您必须通过否定天数才能使其正常工作,我希望实际增加天数。您是否也可以按照正常方式提供该区域性situation@Vivekh:什么是“正常”?如果这是直接用户输入,则用户的文化可能是合适的-但也可能适合采用其正常的日期格式,例如“MM/dd/yyyy”。请注意,如果输入的值超过日期(也指定了时间),那么您应该首先使用
.Date
属性。根据您的使用情况,您可能希望这样做,只是为了安全。@Merlyn:鉴于我们只是在之后打印日期,并且只减去天数,我认为这不会有任何区别。另外请注意,我们使用的格式是只接受日期。