سؤال

كيف يمكنني معالجة تاريخ إدخال المستخدم وتخزينه في قاعدة البيانات في حقل تاريخ؟ يتم إدخال التاريخ من قبل المستخدم باستخدام JQuery DatePicker في حقل نص.

فيما يلي احتياجات محددة لدي:
1. كيف يمكنك تحويل سلسلة مم / DD / YY (يمكن أن تنتج المسج التلقي أي تنسيق) إلى تنسيق قابل للتخزين في قاعدة البيانات كحقل تاريخ.
2. كيفية الحصول على التاريخ ثم تغييره إلى شيء مثل "الأربعاء، 11 أغسطس 2009"؟

أنا أستخدم C # للخلفية، لكن يجب أن أكون قادرا على فهم رمز VB أيضا.

شكرا!

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

المحلول

استعمال DateTime.Parse(string) لتحليل السلسلة إلى DateTime والتي يمكن بعد ذلك حفظها ك DateTime في قاعدة البيانات. قد ترغب في استخدام TryParse كما هو مقترح في إجابات أخرى، للتأكد من أن السلسلة المرفقة يمكن تحليلها إلى DateTime.

لإرجاع DateTime بتنسيق معين، يمكنك الاتصال .tosting () على DateTime و توفير تنسيق أو استخدام واحدة من التنسيقات المحددة مسبقا على سبيل المثال ToShortDateString()

نصائح أخرى

string dateString = "08/11/09";
DateTime yourDate;

if(DateTime.TryParse(dateString, out yourDate)) 
{
   // do something with yourDate
   string output = yourDate.ToString("D"); // sets output to: Tuesday, August 11, 2009
}
else 
{
   // invalid date entered
}

هنا هي قائمة DateTime سلاسل التنسيق: http://msdn.microsoft.com/en-us/library/az4s3k1.aspx.

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

حتى نظرا لك الحصول على تاريخك من DB أو في مكان ما ككائن DateTime، يمكنك القيام بما يلي:

DateTime date = DateTime.Now; //normally would come from somewhere else

//Wednesday, Aug 11, 2009 <-- what we want to get displayed
string displayFormat ="dddd, MMM dd, yyyy";
string formattedDate = string.Format("{0:" + displayFormat + "}", date);

Response.Write(formattedDate);

سيقوم هذا بطباعة ما طلبته. يمكن العثور على شرح سلاسل التنسيق المختلفة هنا.

سيعطيك CDATE (سلسلة) تاريخا حقيقيا من سلسلة، وخيار DeadFormat (سلسلة، خيار) من تنسيق كحدث الحالات - LongdateFormat هي واحدة من الخيارات التي أعتقد أنها تبحث عنها.

بغض النظر عن التنسيق الذي تحلل حقل DateTime الخاص بك

DateTime dt = DateTime.Now;//*example
//FormatString for "Wednesday, Aug 11, 2009" is *dddd,MMM dd,yyyy*
string formattedString = dt.ToString("dddd,MMM dd,yyyy");

يمكنك حمل هذا التنسيق على مستوى العالم واستخدامه

سوف تحقق الإجابات السابقة لمعرفة أنه موعد (على الرغم من أنني أقوم بذلك try catch كتلة للقيام بذلك) بمجرد تأكيد السلسلة لتكون تاريخا، يمكنك فقط تمريرها إلى إجراء مخزن أو وضعه في علامات اقتباس واحدة وجعلها جزءا من عبارة إدراج / تحديث:

string yourdateString ="5-5-09";

update table set da='" + yourDateString + "' WHERE id=@id
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top