【发布时间】:2020-03-17 05:41:18
【问题描述】:
在 ASP.NET MVC 应用程序中,我以这种方式从数据库中获取日期:
public class MonthController : ApiController
{
public List<Month> monthContainer;
public List<Month> getMonth()
{
DataContext dataContext = new DataContext();
monthContainer = (from d in dataContext.Duties
select new Month()
{
MonthDate = d.Date
}).ToList();
return monthContainer;
}
答案是这样格式的日期:
{
"MonthDate": "2015-10-01T00:00:00"
},
{
"MonthDate": "2015-10-02T00:00:00"
}
所以它会在 MonthDate 的每一天一直持续到某一年。 我怎样才能以这种格式只提取几个月而没有双打? 如何在控制器中进行更改? 我想得到这种格式:
"MonthDate": "2015-10"
"MonthDate": "2015-11"
"MonthDate": "2015-12"
"MonthDate": "2016-01"
... "MonthDate": "2019-12"
【问题讨论】:
-
日期没有格式。它们是二进制值。 仅在将文本解析为日期或将日期格式化为显示文本时使用格式。无论您在何处显示这些日期,都可以添加格式字符串或以您想要的格式调用
ToString或String.Format -
如何显示这些日期?这就是您需要使用格式化的地方。至少贴出相关的视图代码
-
你可以使用DisplayFormat属性告诉MVC如何格式化特定的字段。您可以将
[DisplayFormat(DataFormatString = "{0:yyyy-MM}")]添加到MonthDate属性 -
您可能需要将
Month类的MonthDate属性更改为字符串类型。那么您可以使用以下代码。 monthContainer = (from d in dataContext.Duties select new Month() { MonthDate = d.Date.ToString("yyyy-MM", CultureInfo.InvariantCulture) }).ToList();因为date类型没有任何格式,它是一个二进制值,您可以在转换为字符串时对其进行格式化。 -
@Panagiotis Kanavos,嗨!重复的解决方案帮助了我,我在模型中创建了新类,他们转换了我的 JSON,谢谢!
标签: c# asp.net-web-api json.net