Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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#获取月末日期?_C#_.net_Date - Fatal编程技术网

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

如何使用c#获取月末日期?,c#,.net,date,C#,.net,Date,我有一张表格,上面列出了一些资产(产品)的每日价格,但还差几天。我想得到月末的价格,以便计算每年的价格波动。价格波动性定义为月末价格的标准差 如果缺少月末日期,例如31。2010年12月,算法必须向后搜索产品的日期,并使用最近的日期作为月末日期 有没有一种简单的方法可以用c实现这种逻辑 这不应该太复杂 假设您有一个PriceData实例列表,其中PriceData为: class PriceData { public DateTime Date { get; set; } pub

我有一张表格,上面列出了一些资产(产品)的每日价格,但还差几天。我想得到月末的价格,以便计算每年的价格波动。价格波动性定义为月末价格的标准差

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


有没有一种简单的方法可以用c实现这种逻辑

这不应该太复杂

假设您有一个
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());
类价格数据
{
公共日期时间日期{get;set;}
公共双价{get;set;}
}
标价=。。。
var lastPricePerMonth=prices.GroupBy(x=>x.Date.Year*12+y.Date.Month)
.选择(x=>x.OrderByDescending(y=>y.Date)
.First());

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

您需要的可能是带有目标和源日期的日期采样(或日期算法)

看 按日期筛选和抽样表

好的-如果您想在月底

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

然后在你的Linq中使用它。

如果一个月没有记录呢?你尝试过什么吗?我想我回答了另一个问题。您需要指定数据的存储方式(什么是表?它是数据库吗?它的字段是什么等等)。您使用的是LINQ到SQL还是实体框架?我对您的评论的回答是:如果一个月没有记录怎么办?算法应该向后搜索到预定义的天数(例如60天)。只要day count参数允许,该天也可以在上个月。你试过什么了吗?我试着用R(矩阵和向量)做些什么,但到目前为止还没有一个干净的解决方案。现在我需要一个c#的解决方案。数据表相关字段:产品、日期(天)、价格。如果可能的话,我更喜欢使用LINQ的解决方案,但解决方案可以是任何东西。谢谢