0

我需要帮助将这个字符串-->转换 20090727 10:16:36:643 --> 07/27/2009 10:16:36

该函数正在返回原始日期和时间,该SynchronizationAgent.LastUpdated()函数返回上述格式的字符串。


原问题:留作参考

我有这个-->

 HUD.LastSyncDate = mergeSubscription.SynchronizationAgent.LastUpdatedTime;

这是设置一个看起来像这样的属性-->

public static string LastSyncDate
    {
        get { return _lastSyncDate; }
        set
        {
            _lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", value);
        }
    }

不幸的是,无论有没有String.Format显示的日期看起来像这样--> 20090727 10:16:36:643

我已经尝试了多种变体来按照我想要的方式格式化它。我错过了什么?

根据以下建议(主要是 Joel 的),我实施了建议的更改,但我仍然得到一个"String is not a valid DateTime error"

我也尝试过实现这个-->

HUD.LastSyncDate = DateTime.ParseExact(mergeSubscription.SynchronizationAgent.LastUpdatedTime,"yyyyMMdd HH:mm:ss:fff",CultureInfo.InvariantCulture);

但仍然没有。

4

3 回答 3

4
HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")

您可以将任何您想要的格式字符串放在那里。但听起来你真正想要的更像是这样的:

private static DateTime _lastSyncDate;
public static DateTime LastSyncDate
{
    get { return _lastSyncDate; }
    set { _lastSyncDate = value;}
}

public static string LastSyncDateString
{
    get { return LastSyncDate.ToString("MM/dd/yyyy"); }
}

将其作为日期时间保留在后台,并仅使用字符串属性进行显示。

于 2009-07-27T15:39:44.367 回答
1

在我看来,LastUpdatedTime 实际上是一个字符串(因为您可以进行分配)而不是 DateTime。在这种情况下,应用的格式不会做任何事情。您需要将 LastUpdatedTime 解析为 DateTime 然后重新格式化为您想要的格式,然后再将其分配给您的字符串。

DateTime lastUpdated = DateTime.Parse( mergeSubscription.SynchronizationAgent.LastUpdatedTime );
HUD.LastSyncDate = string.Format( "{0:G}", lastUpdated );

public static string LastSyncDate { get; set; }

请注意,您可能需要改用 ParseExact。

DateTime lastUpdated = DateTime.ParseExact( "yyyyMMdd HH:mm:ss:fff",
                                            ...,
                                            CultureInfo.InvariantCulture );
于 2009-07-27T15:39:20.013 回答
0

你想让我做什么?您得到一个字符串,将其传递给String.Format()并将其存储在字符串字段中。你想重新格式化字符串吗?在这种情况下,您必须将字符串解析回DateTime并再次格式化该值。

DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
    lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
    HandleInvalidInput(value);
}
于 2009-07-27T15:47:14.163 回答