日期时间格式yyyymm

时间:2012-06-01 14:20:34

标签: c# linq

除了我需要的那个之外,我找到了你能想到的每个DateTime格式:yyyymm。我该怎么做呢?

我正在使用以下代码:

List <string> routines = new List<string>();
routines.Add("1 - Routine");
routines.Add("6 - Planned Outage");

int year = 2011;
int quarter = 1;

DateTime timeframe = new DateTime(year, (quarter * 3), 01).AddMonths(1); 

var results =

    (from wo in WORKORDERs

        join wot in WORKORDERTYPEs on wo.Wot_oi equals wot.Wotyoi

        join pri in PRIORITies on wo.Prio_oi equals pri.Priooi

        join s in SITEs on wo.BEparn_oi equals s.Siteoi

    where wo.Audt_created_dttm.Value.Year >= year - 3 && wo.Audt_created_dttm.Value.Year >= 2006
        && wo.Audt_created_dttm < timeframe && (s.Id =="NM" || s.Id == "TH") && 
        !wot.Id.Contains("stand") &&  !(wo.Ci_cnc_date != null && pri.Prioid != "1 - Routine" &&
        pri.Prioid != "6 - Planned Outage") && (SqlMethods.Like(pri.Prioid, "1%") || 
        SqlMethods.Like(pri.Prioid, "2%") || SqlMethods.Like(pri.Prioid, "3%"))     

    select new {PM = wo.Wosource, Site = s.Id, Priority = pri.Prioid, Worktype = wot.Id,
        WoNumber = wo.Id, Description = wo.Aenm, CreateDate = wo.Audt_created_dttm,
        CloseDate = wo.Clsdt_date,
        MonthNum = String.Format("{0:yyyy mm}",  wo.Clsdt_date), 
        Planning = routines.Contains(pri.Prioid) ? "Planned" : "Unplanned"});

我尝试使用:

MonthNum = String.Format("{0:yyyy mm}",  wo.Clsdt_date) 

这给了我正确的年份但是月份都是00.我猜这是因为wo.Clsdt_date的格式与我的字符串格式不同(它是mm / dd / yyyy)。

有什么想法吗?

3 个答案:

答案 0 :(得分:13)

您需要MM,而不是mmmm是分钟。

答案 1 :(得分:3)

&#34;毫米&#34;是几分钟,&#34; MM&#34;适用于月份,但月份为2位数。因此,在2012年6月,您将拥有201206,但如果您只需要一个月的一位数,您可以使用一个&#34; M&#34;相反&#34; yyyyM&#34;你会得到20126

DateTime.Now.ToString("yyyyMM")

答案 2 :(得分:1)

在日期格式中,mm表示分钟,而不是月份。请改用MM