PDA

View Full Version : اشکال در تابع Convert.ToDateTime



Erfanian
دوشنبه 10 شهریور 1382, 12:54 عصر
با عرض سلام
من در برنامه‌ام از تابع DateDiff برای بدست آوردن مقدار روز اختلاف دو تاریخ استفاده می‌کنم. که دو تاریخ لازم را از دو مقدار عددی با تابع Convert.ToDateTime به تاریخ تبدیل می‌کنم.
این عمل برروی کامپیوتر خودم که Windows XP است انجام می‌شود ولی وقتی آنرا بر روی Windows Server 2000‌ قرا می‌دهم هنگام تبدیل در تابع Convert.ToDateTime خطا پیش می‌آید.
اشکال هم فکر کنم از ترتیب قرارگرفتن روز/ماه/سال در آرگمان تابع Convert.ToDateTime باشد که در هر کدام از سیستم‌عاملها بیک صورت است.لطف کنید برای رفع این مشکل مر ا راهنمائی کنید.
متشکرم :oops:

Vahid_Nasiri
دوشنبه 10 شهریور 1382, 14:19 عصر
بله ! همینطور است که می فرمایید. می شود تاریخ را در هر سیستمی در کنترل پنل به یک صورت بیان کرد و به همین جهت ممکن است مشکل در برنامه ایجاد شود.
برای این منظور باید به صورت زیر عمل کرد تا در هر سیستمی با هر تنظیمی تنظیمات ما اعمال گردد :


System.DateTime.Now.ToString("dd-MM-yy");

و کلا مطابق MSDN این فرمتها ساپورت می شود:



using System;
using System.Globalization;

public class MainClass {
public static void Main(string[] args) {
DateTime dt = DateTime.Now;
String[] format = {
"d", "D",
"f", "F",
"g", "G",
"m",
"r",
"s",
"t", "T",
"u", "U",
"y",
"dddd, MMMM dd yyyy",
"ddd, MMM d \"'\"yy",
"dddd, MMMM dd",
"M/yy",
"dd-MM-yy",
};
String date;
for (int i = 0; i < format.Length; i++) {
date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);
Console.WriteLine(String.Concat(format[i], " :" , date));
}

/** Output.
*
* d :08/17/2000
* D :Thursday, August 17, 2000
* f :Thursday, August 17, 2000 16:32
* F :Thursday, August 17, 2000 16:32:32
* g :08/17/2000 16:32
* G :08/17/2000 16:32:32
* m :August 17
* r :Thu, 17 Aug 2000 23:32:32 GMT
* s :2000-08-17T16:32:32
* t :16:32
* T :16:32:32
* u :2000-08-17 23:32:32Z
* U :Thursday, August 17, 2000 23:32:32
* y :August, 2000
* dddd, MMMM dd yyyy :Thursday, August 17 2000
* ddd, MMM d "'"yy :Thu, Aug 17 '00
* dddd, MMMM dd :Thursday, August 17
* M/yy :8/00
* dd-MM-yy :17-08-00
*/
}
}
[C++]
#using <mscorlib.dll>

using namespace System;
using namespace System::Globalization;

void main ()
{
DateTime dt = DateTime::Now;
String* format[] = {
L"d", L"D",
L"f", L"F",
L"g", L"G",
L"m",
L"r",
L"s",
L"t", L"T",
L"u", L"U",
L"y",
L"dddd, MMMM dd yyyy",
L"ddd, MMM d \"'\"yy",
L"dddd, MMMM dd",
L"M/yy",
L"dd-MM-yy",
};
String * date;
for (int i = 0; i < format->Length; i++)
{
date = dt.ToString(format[i], DateTimeFormatInfo::InvariantInfo);
Console::WriteLine(String::Concat(format[i], L" :" , date));
}

/** Output.
*
* d :08/17/2000
* D :Thursday, August 17, 2000
* f :Thursday, August 17, 2000 16:32
* F :Thursday, August 17, 2000 16:32:32
* g :08/17/2000 16:32
* G :08/17/2000 16:32:32
* m :August 17
* r :Thu, 17 Aug 2000 23:32:32 GMT
* s :2000-08-17T16:32:32
* t :16:32
* T :16:32:32
* u :2000-08-17 23:32:32Z
* U :Thursday, August 17, 2000 23:32:32
* y :August, 2000
* dddd, MMMM dd yyyy :Thursday, August 17 2000
* ddd, MMM d "'"yy :Thu, Aug 17 '00
* dddd, MMMM dd :Thursday, August 17
* M/yy :8/00
* dd-MM-yy :17-08-00
*/
}
[JScript]
import System;
import System.Globalization;


var dt : DateTime = DateTime.Now;
var format : String[] = [
"d", "D",
"f", "F",
"g", "G",
"m",
"r",
"s",
"t", "T",
"u", "U",
"y",
"dddd, MMMM dd yyyy",
"ddd, MMM d \"'\"yy",
"dddd, MMMM dd",
"M/yy",
"dd-MM-yy",
];
var date : String;
for (var i : int = 0; i < format.Length; i++) {
date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);
Console.WriteLine(format[i] + " :" + date);
}


/** Output.
*
* d :08/17/2000
* D :Thursday, August 17, 2000
* f :Thursday, August 17, 2000 16:32
* F :Thursday, August 17, 2000 16:32:32
* g :08/17/2000 16:32
* G :08/17/2000 16:32:32
* m :August 17
* r :Thu, 17 Aug 2000 23:32:32 GMT
* s :2000-08-17T16:32:32
* t :16:32
* T :16:32:32
* u :2000-08-17 23:32:32Z
* U :Thursday, August 17, 2000 23:32:32
* y :August, 2000
* dddd, MMMM dd yyyy :Thursday, August 17 2000
* ddd, MMM d "'"yy :Thu, Aug 17 '00
* dddd, MMMM dd :Thursday, August 17
* M/yy :8/00
* dd-MM-yy :17-08-00
*/