我需要帮助将此字符串 - > 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);
但仍然没有。
答案 0 :(得分:4)
HUD.LastSyncDate = DateTime.Parse(mergeSubscription.SynchronizationAgent.LastUpdatedTime).ToString("MM/dd/yyyy")
您可以将任何format string放在那里。但听起来你真正想要的更像是这样:
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"); }
}
将其作为日期时间保留在后台,只需使用字符串属性进行显示。
答案 1 :(得分: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 );
答案 2 :(得分:0)
你想做什么?你得到一个字符串,将其传递给String.Format()
并将其存储在字符串字段中。你想重新格式化字符串吗?在这种情况下,您必须将字符串解析回DateTime
并再次格式化此值。
DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
HandleInvalidInput(value);
}