سؤال

أحتاج إلى مساعدة في تحويل هذه السلسلة --> 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

لقد جربت اختلافات متعددة لتنسيقها بالطريقة التي أريدها. ماذا ينقصني؟

بناء على الاقتراحات أدناه (معظمهم جويل)، قمت بتنفيذ التغييرات المقترحة ولكني ما زلت أحصل على "String is not a valid DateTime error"

أنا أيضا حاول تنفيذ هذا ->

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

ولكن لا يزال لا شيء.

هل كانت مفيدة؟

المحلول

يبدو لي أن الوقت lastupdated هو في الواقع سلسلة (نظرا لأنك تستطيع القيام بالمهمة) وليس بعد مرور. في هذه الحالة، لن يقوم التنسيق المطبق بأي شيء. سترغب في تحليل الوقت القياسي في تاريخ بعد ثم إعادة تهيئة التنسيق الذي تريده قبل تعيينه إلى سلسلةك.

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

نصائح أخرى

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

احتفظ به كدولة تاريخية في الخلفية واستخدم فقط خاصية السلسلة للعرض.

ماذا تريد أن تفعل؟ تحصل على سلسلة، تمر String.Format() وتخزينها في حقل سلسلة. هل ترغب في إعادة تهيئة السلسلة؟ في هذه الحالة، عليك تحليل السلسلة مرة أخرى DateTime وتنسيق هذه القيمة مرة أخرى.

DateTime dateTime;
if (DateTime.TryParse(value, out dateTime))
{
    lastSyncDate = String.Format(CultureInfo.InvariantCulture,"{0:G}", dateTime);
}
else
{
    HandleInvalidInput(value);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top