转换日期时间格式不能正确格式化

本文关键字:格式化 不能 格式 日期 时间 转换 | 更新日期: 2023-09-27 18:07:49

这个让我觉得自己像个白痴,但我不明白为什么它不起作用。

我有String

"6/9/2014 9:30:20 AM"

我将这个字符串解析为DateTime。

DateTime myTempDate = DateTime.Parse(date);

现在读起来是一样的,现在我想把它缩短到一个月。

myTempDate.ToString("MMMM");

但是结果还是一样的…

我已经尝试转换。ToDatetime我也试过其他格式,它从来没有改变过。

这是怎么回事??

更新:

ok似乎方法是正确的,我也没有发疯,所以这里一定发生了别的事情…

一些额外的信息,如果这有帮助。这些都是在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>
}

转换日期时间格式不能正确格式化

Try This:

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");

这就是问题所在。您没有使用返回值。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");

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建议/提到