如何用c#获取月末日期?

时间:2013-01-15 11:13:18

标签: c# .net date

我有一张桌子,上面有一些资产(产品)的每日价格,有些日子不见了。我想得到月末价格来计算每年的价格波动。价格波动定义为月末价格的标准差。

如果缺少月末日期,例如2010年12月31日,算法必须向后搜索产品的日期,并使用最近的日期作为月末日期。

有一种简单的方法可以用c#实现这个逻辑吗?

3 个答案:

答案 0 :(得分:1)

您需要的可能是具有目标和来源日期的日期抽样(或日期算法)。

请参阅 按日期过滤和抽样表格 http://finaquant.com/filtering-and-sampling-tables-by-dates/2606

答案 1 :(得分:0)

这不应该太复杂。

假设您有一个PriceData个实例列表,其中PriceData为:

class PriceData
{
    public DateTime Date { get; set; }
    public double Price { get; set; }
}

List<PriceData> prices = ...

var lastPricePerMonth = prices.GroupBy(x => x.Date.Year * 12 + y.Date.Month)
                              .Select(x => x.OrderByDescending(y => y.Date)
                                            .First());

这将返回每个月的最新PriceData对象。

答案 2 :(得分:0)

好的 - 如果你想要月底......

DateTime theDate = DateTime.Now; // start with any date....
DateTime endOfMonth = new DateTime(theDate.Year, theDate.Month + 1, 1).AddDays(-1);

然后在你的Linq中使用它。