c#有一种简单的方法可以将月份整数转换为name

时间:2012-07-03 21:40:19

标签: c# asp.net-mvc-3 monthcalendar

我正在尝试为博客应用程序创建存档列表。我有一个veiw模型,其中包含以下代码片段:

@model IEnumerable<NPLHBlog.Models.ArchiveListModels>
...
        @foreach (var item in Model)
        {
            <li>@item.ArchiveMonth/@item.ArchiveYear : @item.PostCount</li>
        }
...

我正在尝试打印item.ArchiveMonth为'Jan'而不是'1'。

ArchiveListModel如下:

public class ArchiveListModels
{
    public int ArchiveYear { get; set; }
    public int ArchiveMonth { get; set; }
    public int PostCount { get; set; }
}

并从存储库中读取博客,如下所示:

    public IQueryable<ArchiveListModels> ArchiveList()
    {
        var archiveList = from blogs in db.Blogs
                          group blogs by new { blogs.PublishDate.Year, blogs.PublishDate.Month }
                              into dateGroup
                              select new ArchiveListModels()
                              {
                                  ArchiveYear = dateGroup.Key.Year,
                                  ArchiveMonth = dateGroup.Key.Month,
                                  PostCount = dateGroup.Count()
                              };
        return archiveList;
    }

非常感谢。

4 个答案:

答案 0 :(得分:11)

CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(1);

或abrev

CultureInfo.CurrentUICulture.DateTimeFormat.AbbreviatedMonthNames[1];

答案 1 :(得分:4)

获取完整的月份名称

int month = 1;
System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat.GetMonthName(month);

或者您可以使用日期时间字符串格式:

int month = 1;
var dt = new DateTime(2012, month, 1):
var monthAbbr = dt.ToString("MMM");

或者您可以对缩写列表

进行查找
int month = 1;
var monthAbbr =     System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat.AbbreviatedMonthNames[month];

答案 2 :(得分:3)

我相信你想要:

.ToString("MMM");

您甚至可以为特定月份创建自己的DateTime对象:

DateTime jan = new DateTime(2012, 1, 1);
return jan.Date.ToString("MMM");

答案 3 :(得分:0)

如果要对数据库中的数据使用ViewBags,您也可以轻松使用该格式。请记住。

@foreach (var item in ViewBag.HealthCare)
{
    @item.Created_Date.ToString("MMMM yyyy")

}