PDA

View Full Version : تغییر فرمت تاریخ ویندوز



maryam_vb
یک شنبه 02 دی 1386, 11:30 صبح
سلام
من میخوام برنامه ام تو هر سیستمی که نصب شد چون با فرمت تاریخ به شکل yyyy/mm/dd کار میکنه بیاد فرمت تاریخ ویندوز (short date format)رو به این فرمت تغییر بده ،آیا راهی برای این کار وجود داره؟

maryam_vb
سه شنبه 04 دی 1386, 09:45 صبح
تو توابع api کسی چیزی در این مورد سراغ نداره به ما بگه تا مشکلمون حل شه؟

ir_programmer
سه شنبه 04 دی 1386, 10:49 صبح
چرا از فرمت استفاده نمی کنی؟


Format(Today, "yyyy/MM/dd")

morteza_261
سه شنبه 04 دی 1386, 11:42 صبح
با سلام

یه نگاه به این برنامه بنداز شاید مشکلت حل شه
من با همه فرمت ها امتحان کردم کار کرد

maryam_vb
سه شنبه 04 دی 1386, 13:05 عصر
چرا از فرمت استفاده نمی کنی؟


تابع فرمت رو قبلا استفاده کردم ولی یه مشکلی داره ، اینکه اگر date separator چیزی غیر از / باشه، اونو به / تغییر نمیده و وقتی تاریخ به تابع دیگه ای فرستاده میشه چون فقط / رو میشناسه خروجی 0 رو برمیگردونه.

Ner'zhul Arthas
سه شنبه 04 دی 1386, 13:13 عصر
نباید برای برنامه، سیستم طرف رو تغییر بدید.
برنامه تون رو طوری کنید که همه ی فرمت ها رو قبول کنه.

ir_programmer
سه شنبه 04 دی 1386, 13:14 عصر
میشه فرمتت رو کامل بگی. کامل مشکلت رو بنویس.

maryam_vb
سه شنبه 04 دی 1386, 13:23 عصر
نباید برای برنامه، سیستم طرف رو تغییر بدید.
برنامه تون رو طوری کنید که همه ی فرمت ها رو قبول کنه.
بله حرف شما تو این مشکل کاملا منطقی است .همین کارو میکنم. ولی بعضی تنظیمات حتما باید تغییر بکنه مثلا حتما باید سیستم کاربر فارسی بشه تا برنامه فونت های فارسی رو بشناسه اینو که نمیشه برنامه نویسی کرد ، قبول دارید؟

maryam_vb
سه شنبه 04 دی 1386, 13:48 عصر
مشکل برطرف شد.
این کد فرمت تاریخ ویندوز هر چی که باشه به فرمت yyyy/mm/dd تبدیل میکنه:


fmilady = Format(Date.Today, "yyyy/MM/dd")
If Mid(fmilady, 5, 1) <> "/"Then
fmilady = Trim(Mid(fmilady, 1, 4) + "/" + Mid(fmilady, 6, 2) + "/" + Mid(fmilady, 9, 2))
EndIf

ir_programmer
سه شنبه 04 دی 1386, 13:58 عصر
if چیکار میکنه؟ ممکنه واردش بشه اصلا؟

amirsajjadi
سه شنبه 04 دی 1386, 20:14 عصر
این تابع تاریخ رو با فرمت استاندارد میسازه


DateSerial(1385, 12, 10)

این تابع چک میکنه که آیا فرمت تاریخ درسته یا خیر


IsDate(d)

maryam_vb
چهارشنبه 05 دی 1386, 11:01 صبح
if چیکار میکنه؟ ممکنه واردش بشه اصلا؟

شرط if اگه date separator چیزی غیر از "/" بود اجرا میشه تا تاریخ رو به فرمت yyyy/mm/dd
تبدیل کنه. مثلا: 14-10-2007 به 14/10/2007

ir_programmer
چهارشنبه 05 دی 1386, 11:30 صبح
شرط if اگه date separator چیزی غیر از "/" بود اجرا میشه تا تاریخ رو به فرمت yyyy/mm/dd
تبدیل کنه. مثلا: 14-10-2007 به 14/10/2007

بازم میگم. وارد If نمی شه. آخه فرمت داره / رو میسازه نه - . پس همیشه / ساخته میشه و چیزی غیر از اون ساخته نمیشه که وارد if بخاد بشه!

titbasoft
چهارشنبه 05 دی 1386, 12:01 عصر
Format زمانی درست کار میکنه که تاریخ (یا زمان) به صورت درست وارد شده باشه. مثلا اگر در رشته خودتون مقدار Hello رو بزارید می بینید که فرمت اشتباه عمل می کنه. پس اول باید از استاندارد بودن فرمت تاریخ مطئن باشید و بعد با استفاده از Format می تونید بین فرمت های استاندارد سوئیچ کنید.

والبته هونطور که گفتند شرط همیشه نادرست خواهد بود چون به هر حال دارید به رشته فرمت مربوطه که شامل / هست رو اعمال می کنید.

maryam_vb
چهارشنبه 05 دی 1386, 13:32 عصر
البته من از شما برنامه نویسان حرفه ای خیلی معذرت میخوام ولی تابع فرمت - رو به / تبدیل نمیکنه . تست کردم این حرفو میزنم باور کنید.

ir_programmer
چهارشنبه 05 دی 1386, 16:17 عصر
البته من از شما برنامه نویسان حرفه ای خیلی معذرت میخوام ولی تابع فرمت - رو به / تبدیل نمیکنه . تست کردم این حرفو میزنم باور کنید.

من که متوجه نشدم. آخه ما داریم میگم فرمت رو yyyy/MM/dd بساز بعد yyyy-MM-dd ساخته میشه؟

maryam_vb
پنج شنبه 06 دی 1386, 09:49 صبح
شما تنظیمات ویندوز رو از / به - تغییر بدید ، بعد از تابع فرمت استفاده کنید به حرف من میرسید.