PDA

View Full Version : سوال: فقط ساعت و دقیقه بدون تاریخ



iceamir
جمعه 22 آذر 1387, 19:25 عصر
سلام
یه مشکل کوچولو
چه جوری میتونم فقط زمان(ساعت و دقیقه) مورد نظر خودم رو در یه فیلد از جدول که نوعش رو datetime انتخاب کردم قرار بدم ؟
هر کاری میکنم تاریخ هم کناره ساعت میاد .
ممنون میشم جواب بدین ...

مهدی رحیم زاده
جمعه 22 آذر 1387, 20:32 عصر
من از رشته برای ذخیره تاریخ و زمان استفاده می کنم و مشکلی هم ندارم .
اگه برنامتون زیاد تغییر نمی کنه راه ساده ایه . البته میدونم که اصولی نیست !!!

H2K
جمعه 22 آذر 1387, 22:20 عصر
DateTime dt = DateTime.Now;
MessageBox.Show(dt.Hour.ToString() + ":" + dt.Minute.ToString());

iceamir
جمعه 22 آذر 1387, 22:56 عصر
DateTime date, datex
date = dateTimePicker1.Value
(datex=Convert.ToDateTime(textBox8.Text + ':'+ textBox9.Text
(TIKETTableAdapter.InsertQuery(bhid, cid, s, d, Price, date,datex, aid, count
(this.TIKETTableAdapter.Fill(this.dataSet.TIKET

iceamir
جمعه 22 آذر 1387, 22:59 عصر
مشکلم حل نشد
این قسمت برنامه ی بالا هست مشکلم

iceamir
شنبه 23 آذر 1387, 00:00 صبح
بهتر بگم میخوام از datetimepicker همونجوری که تاریخ رو انتخاب میکنم زمان رو هم انتخاب کنم
نه اینکه زمان فعلی رو برگردونه...

dark-man
شنبه 23 آذر 1387, 09:25 صبح
شاید این بتونه کمکت کنه

;int i = datetimepicker1.value.hour

این کد مقدار ساعت انتخاب شده رو تو یه متغییر int قرار میده . و این مجموعه کد هم شاید کمکت کنه :

[LTR_INLINE]



private int Hour
{

get

{

// Return the current hour displayed

return dtpHour.Value.Hour;
}

set

{

// Set the date using the hour
// passed to this property

dtpHour.Value = new DateTime(

DateTime.Now.Year, DateTime.Now.Month,

DateTime.Now.Day, value, 0, 0);

// Set the display text

lblState.Text = "At " + value + ":00 Matt is ";
}
}


[LTR_INLINE/]

ennovation
شنبه 23 آذر 1387, 17:03 عصر
سلام .
برای اینکار فقط کافیه که از این آرایه استفاده کنی و به جای متغیر x اعداد 88 یا 93 قرار بدهی . آرایه 88 ساعت و دقیقه را برمیگرداند و آرایه 93 ساعت و دقیقه و ثانیه .
در این آرایه میتونی از 0 تا 111 عدد را قرار بدهی و 112 حالت مختلف را در مورد زمان یا تاریخ داشته باشی . در این مثال فرض کن که پارامتر mydate یک پارامتر از نوع DATETIME میباشد


string[] form = mydate.GetDateTimeFormats();
string f1 = form[88]; // ساعت و دقیقه
string f2 = form[93];// ساعت و دقیقه و ثانیه

T_E_X_A_S
شنبه 23 آذر 1387, 17:27 عصر
می تونی اگه دیتا بیست Access هست

Text تعریف کنی و Input Mask رو ShortTime بزار

iceamir
شنبه 23 آذر 1387, 17:36 عصر
از همه ممنون
دیتا بیسم sql هستش و میخواستم نوع زمانی که داشتم رو datetime بگیرم و از داخل #C مقدار دهی کنم که نشد . فکر کنم همون string بگیرم بهتر باشه ...

ar.shirazi
یک شنبه 24 آذر 1387, 12:20 عصر
دوست گرامی
شما نوع داده ای تان smnalldatetime باشد . مشکلی نیست که تاریخ را هم ذخیره میکند. شما یک تاریخ پیش فرض مثلا 1900/1/1 در نظر بگیرید.

sara_B
یک شنبه 24 آذر 1387, 14:47 عصر
سلام
یه مشکل کوچولو
چه جوری میتونم فقط زمان(ساعت و دقیقه) مورد نظر خودم رو در یه فیلد از جدول که نوعش رو datetime انتخاب کردم قرار بدم ؟
هر کاری میکنم تاریخ هم کناره ساعت میاد .
ممنون میشم جواب بدین ...


ببينيد شما مي گيد نوع فيلدتون توي جدول ديتا بيس از نوع Datetime هست ، از طرفي انتظار داريد ، كه موقع پر كردن اين فيلد توي ديتا بيس فقط ساعت درج بشه؟!!!:متعجب:
خوب اين انتظار بعيدي هست ، مثل اينكه من انتظار داشته باشم توي فيلد از نوع int ، رشته درج كنم!!
datetime از اسمش پيداست : date + time

اينكه مي گيد نميشه از طريق C# ، فيلد datetime رو فقط با ساعت مقدار دهي كنيد هم ، درست نيست، چون من اين كارو بارها انجام دادم:متفکر:: توي يه textbox فقط ساعت و دقيقه رو از كاربر گرفتم ، و بعد توي ديتا بيس ذخيره كردم .(يه validation هم گذاشتم تا كاربر فرمت دقيق زمان (ساعت : دقيقه ) را درست وارد كنه.)كه به راحتي توي ديتا بيس ام ذخيره مي شه .
مثال :
كاربري اين مقدار را در تكست باكس مربوطه وارد كرده :
12:3
اين مقدار توي ديتا بيس ذخيره مي شه : 1900/01/01 12:03:00 ب.ظ
همونطور كه ar.shirazi هم گفتن ، SQL تاريخ پيش فرض يعني 1900/01/01 را در نظر مي گيره .
وقتي هم كه قراره مجددا داخل گريد مشاهده بشه ، ستوني كه براي نمايش ساعت هست را از جنس templateField در نظر مي گيرم ، تا به راحتي تابع زير را بهش پاس بدم ، اين تابع تاريخ كامل(كه از نوعdatetime هست) رو به ساعت تبديل مي كنه و در گريد توي اون ستون اين مقدار نمايش داده مي شه : 12:3
اينم كدش (كه دوستان نمونه هاي زيادي رو تو همين تاپيك گداشتن)



protected string FullDateToTime(DateTime dt)
{
string MyTime = dt.Hour.ToString() + ":" + dt.Minute.ToString();
return MyTime;
}




(سعي كنيد هميشه تاريخ را از جنس datetime بگيريد ، تا موقع گسترش برنامه ، مشكل پيدا نشه .شايد يه روزي شما خواستيد ساعت سيستم رو توي ديتا بيس ذخيره كنيد ، اگه زمان از نوع string تعريف بشه ، مشكل ايجاد مي كنه.خدا رو چه ديديد شايد يه روز به تاريخ نياز پيدا كردين:چشمک::لبخندساده:)

iceamir
یک شنبه 24 آذر 1387, 19:02 عصر
فکر کنم یا من خیلی گیجم یا شما خیلی حرفا ای ...
من این جنس templateField رو نمیدونم از کجا باید به ستونم اختصاص بدم .
و اینکه اگه به این نوع تغییر کنه اون وقت string توش پاس میشه ؟
چون خروجی این تابعی که شما نوشتین رشته هستش نه datetime

sara_B
یک شنبه 24 آذر 1387, 21:44 عصر
فکر کنم یا من خیلی گیجم یا شما خیلی حرفا ای ...
نه كاربر محترم ، من حرفه اي نيستم، برعكس مبتدي ام.



من این جنس templateField رو نمیدونم از کجا باید به ستونم اختصاص بدم .و اینکه اگه به این نوع تغییر کنه ...

templateField ، يك نوع داده اي توي جدول ديتا بيس شما نيست ،بلكه از قابليت هاي خوب گريد ويو هست.
نيازي نيست به ديتا بيس كاري داشته باشيد ، اونجا فقط فيلدتونو از جنس dateTime تعريف كنيد.

چون خروجی این تابعی که شما نوشتین رشته هستش نه datetime
بله خروجي از جنس رشته بايد باشه ، كه بشه اونو توي گريد نمايش داد.
و اين خروجي در واقع تبديل datetime به ساعته و سپس تبديل ساعت به يه رشته و بعد هم پاس دادنش به گريد ويو ، تا بشه اونو توي گريد به شكل ساعت نمايش داد.(هموني كه شما مي خوايد).
بحث templateField ها ، كه يكي از راه حل ها هست، توي سايت به وفور مي تونيد با جستجوي كلمه ي TemplateField در گريد ويو ، پيدا كنين، كه همه پست هاي اساتيد هستش و كامل و جامع.
اما اين پست خود منه كه قبلا كامل توضيح دادم در باره ي templateField ها (پست #6)
پست من (http://barnamenevis.org/forum/showthread.php?p=644567#post644567)
مي تونيد ازش كمك بگيريد .

iceamir
جمعه 06 دی 1387, 13:30 عصر
دیتا گریدی که با ویندوز app ایجاد میشه که اخه template field نداره

iceamir
جمعه 20 دی 1387, 01:36 صبح
حل شد ولی همون طور که گفتم چون برنامه تحت ویندوز بود نه وب
برا همین با روش هایی که شما گفتین نشد...

ennovation
جمعه 20 دی 1387, 01:59 صبح
حل شد ولی همون طور که گفتم چون برنامه تحت ویندوز بود نه وب
برا همین با روش هایی که شما گفتین نشد...

دوست عزیز لطف کنید و اون روشی که میفرمایید را بگید که ما هم از این روش بهره ببریم .
برای من به شخصه این مشکلی نیست که مربوط به ویندوز یا وب باشه . ممنون میشم که کد خودتونو برای ما بگذارید.