这个让我觉得自己像个白痴,但我无法弄清楚为什么这个不起作用。
我有字符串
"6/9/2014 9:30:20 AM"
我将此字符串解析为DateTime。
DateTime myTempDate = DateTime.Parse(date);
现在看起来一样,好了,现在我想把它缩短到一个月。
myTempDate.ToString("MMMM");
但结果仍然相同......
我试过Convert.ToDatetime我也试过其他格式,它永远不会改变。
这里发生了什么?
更新:
好吧似乎方法是正确的,我不会疯狂,所以别的东西必须在这里......
如果有帮助,可以提供一些额外信息。 这一切都在Umbraco 7.1.x
中完成这是在局部视图中发生的。
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@using System.Web.Mvc.Html;
@using Umbraco.Web;
@using System.Globalization;
@{
// Get this blogs root, does not use an id because there may be more thanone blog
IPublishedContent blogRoot = Model.Content.AncestorOrSelf("SmartBlogBlog");
// Get the posts in this blog
IEnumerable<IPublishedContent> posts = blogRoot.Descendants("SmartBlogPost").OrderBy("updateDate");
// Create the tag dictionary
Dictionary<string, int> categoryList = new Dictionary<string, int>();
Dictionary<string, int> dateList = new Dictionary<string, int>();
// Loop through all the posts then loop through their tags to add to the tag dictionary
foreach (IPublishedContent post in posts)
{
string[] categories = post.GetProperty("smartBlogCategory") != null
&& post.GetProperty("smartBlogCategory").Value != null
&& !string.IsNullOrEmpty(post.GetProperty("smartBlogCategory").Value.ToString())
? post.GetProperty("smartBlogCategory").Value.ToString().Split(',')
: new string[0];
string[] dates = post.GetProperty("smartBlogDate") != null
&& post.GetProperty("smartBlogDate").Value != null
&& !string.IsNullOrEmpty(post.GetProperty("smartBlogDate").Value.ToString())
? post.GetProperty("smartBlogDate").ToString().Split(',')
: new string[0];
foreach (string category in post.GetProperty("smartBlogCategory").Value.ToString().Split(','))
{
if (categoryList.ContainsKey(category))
{
categoryList[category]++;
}
else
{
categoryList.Add(category, 1);
}
}
foreach(string date in post.GetProperty("smartBlogDate").Value.ToString().Split(','))
{
if(dateList.ContainsKey(date))
{
DateTime tempDate = DateTime.Parse(date);
tempDate.ToString("MMMM");
string myTempDate = tempDate.ToString();
dateList[myTempDate]++;
}
else
{
DateTime myTempDate = DateTime.Parse(date);
myTempDate.ToString("MMMM");
string finalTempDate = myTempDate.ToString();
dateList.Add(finalTempDate, 1);
}
}
}
<span class="smartSubTitle smartTopBorder">Categories</span><br />
// Loop through the tag dictionary
<ul>
@foreach(KeyValuePair<string, int> category in categoryList)
{
//Deal with the tag
<li>
<span><a class="smartCategory" href="@Umbraco.NiceUrl(blogRoot.Id)?category=@category.Key">@category.Key</a></span>
<p>...........................</p>
</li>
}
@foreach(KeyValuePair<string, int> date in dateList)
{
<li>
<span><a class="smartDate" href="@Umbraco.NiceUrl(blogRoot.Id)?category=@date.Key">@date.Key</a></span>
<p>...........................</p>
</li>
}
</ul>
}
答案 0 :(得分:1)
试试这个:
string dt = "6/9/2014 9:30:20 AM";
DateTime dtFinal = DateTime.ParseExact(dt, "d/M/yyyy h:mm:ss tt",
CultureInfo.InvariantCulture);
String MonthName = dtFinal.ToString("MMMM");
修改强>
您没有在以下语句中指定ToString()函数的返回值:
tempDate.ToString("MMMM");
您需要将ToString()函数的返回值分配给某个相关变量,如下所示:
String MonthName = tempDate.ToString("MMMM");
答案 1 :(得分:1)
这就是问题所在。您没有使用返回值。 ToString不会修改现有值。它返回一个新字符串。所以代替下面的代码
tempDate.ToString("MMMM");
string myTempDate = tempDate.ToString();
myTempDate.ToString("MMMM");
string finalTempDate = myTempDate.ToString();
将其更改为:
string myTempDate = tempDate.ToString("MMMM");
string finalTempDate = myTempDate.ToString("MMMM");
答案 2 :(得分:0)
<强> TRY 强>
string monthName = myTempDate.ToString("MMMM", CultureInfo.InvariantCulture);
另外
可以替换
DateTime myTempDate = DateTime.Parse(date);
带
DateTime myTempDate = DateTime.ParseExact(date, "d/M/yyyy h:mm:ss tt",
CultureInfo.InvariantCulture);
根据建议/提及:Sudhakar Tillapudi