الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال : جمع التاريخ باسلوب أخر ؟

بدأه Swift في 7 أغسطس 2008 · 11 رد · 1,967 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

----------------------

شباب لى سؤال غريب شوية

لدى منظومة صغيرة لعمل فحص لتاريخ الصلاحية والأنتهاء كما بالصورة

post-87900-1218116030_thumb.jpg

سؤالى : كيف عندما يتم اختيار المدة ولتكن 1 Year يتم تحديد تاريخ الأنتهاء تلقائياً ؟

أنا عايز طريقة تعتمد على الأجندة بمعنى أنة يراعى الشهور

على سبيل المثال

تاريخ اصدار المنتج : 29/2/2008

والمدة : سنة

تاريخ الأنتهاء : سوف يكون : 1/3/2009

Comming Soon

#2

السلام عليكم

ضف يوم الى تاريخ اصدار المنت 29/2/2008+1 = 01/03/2008

ثم غير السنة الى 2008+1 = 2009

:pwease: سهلة لكن هل هدا ما تريد ?

#3
اقتباس
ضف يوم الى تاريخ اصدار المنت 29/2/2008+1 = 01/03/2008

ثم غير السنة الى 2008+1 = 2009

لم أقصد هذا التاريخ بعينة ولكن دة على سبيل المثال

اقتباس
لكن هل هدا ما تريد ?

بالطبع لا :blink:

اقتباس
أنا عايز طريقة تعتمد على الأجندة بمعنى أنة يراعى الشهور

أنا عندما ذكرت المثال .. اقصد به ان يكون البرنامج "ذكى" يراعى اذا كان الشهر كم يوم والى أخرة

فقد قمت بوضع المثال السابق علشان مفيش أحد يقولى نجمع بأستخدام الأشهر وخلصنا زى كدة

29 / 02 / 2008

+ 00 /00 /0001

-----------------------

29/ 02/2009

علشان كدة انا محتار :wub:

تم تعديل هذه المشاركة بواسطة Swift في 7 أغسطس 2008 في 17:13

Comming Soon

#4

سؤال غريب حقا و اجابة كانت اغرب لا تاخذني تعبان اليوم من العمل

#5

استخدم التابع DecodeDate للحصول على الشهر والسنة واليوم في متغيرات مختلفة

ثم اضف عدد الشهور لمتغير الشهور

ثم اعد تحويل المتغيرات الثلاث الى TDateTime بالتابع EncodeDate

طبعا عليك اضافة مجموعة من if للتحقق من ايام الشهور والسنة الكبيسة

-

هناك طريقة اخرى

وهي التعامل مع التاريخ TDateTime دون تحويله

وتحويل المدة اى ايام بعد حسابها

ثم اضافتها لمتغير التاريخ

والسلام عليكم ورحمة الله

d4baa0.gif
#6

أخي Swift

دائما متميز ماشاء الله عليك

حسب ما فهمت فأنت تريد توقيت المنتج ليتوقف بعد سنة أو ستة شهور أو شهر بالتحديد

أستخدمت الكود

procedure TForm1.Button1Click(Sender: TObject);

var i,year : integer;
dates : Tdate;
begin
year := strtoint(copy(datetostr(datetimepicker1.date),7,4))
dates := strtodate('01/01/'+inttostr(year));
i := 0;
while dates <> strtodate('01/01/'+inttostr(year+1)) do
begin
dates := dates + 1;
i := i + 1;
end;
case combobox1.ItemIndex of
0 : edit1.Text := datetostr(datetimepicker1.date + (i div 12));
1 : edit1.Text := datetostr(datetimepicker1.date + (i div 2));
2 : edit1.Text := datetostr(datetimepicker1.date + i);
end;
end;

Swift كتب:
على سبيل المثال

تاريخ اصدار المنتج : 29/2/2008

والمدة : سنة

تاريخ الأنتهاء : سوف يكون : 1/3/2009

و النتيجة كانت كما المثال أنظر المرفق و إن لم يكن ما تريد فأنا معك على الخط

لماذا لم تطرح السؤال في

/index.php?showtopic=164581

:haha:

كل الأحترام

timing.rar

تم تعديل هذه المشاركة بواسطة rober في 8 أغسطس 2008 في 01:08

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#7

و عليكم السلام و رحمة الله تعالى و بركاته

الوحدة DateUtils تحتوي على إجراءات التاريخ، هي مفيدة على الأقل استخلاص الإجراءات

{	   Date/time Utilities Unit						}


unit DateUtils;

{ Increment/decrement datetime fields }

function IncYear(const AValue: TDateTime;
  const ANumberOfYears: Integer = 1): TDateTime;
// function IncMonth is in SysUtils
function IncWeek(const AValue: TDateTime;
  const ANumberOfWeeks: Integer = 1): TDateTime;
function IncDay(const AValue: TDateTime;
  const ANumberOfDays: Integer = 1): TDateTime;
function IncHour(const AValue: TDateTime;
  const ANumberOfHours: Int64 = 1): TDateTime;
function IncMinute(const AValue: TDateTime;
  const ANumberOfMinutes: Int64 = 1): TDateTime;
function IncSecond(const AValue: TDateTime;
  const ANumberOfSeconds: Int64 = 1): TDateTime;
function IncMilliSecond(const AValue: TDateTime;
  const ANumberOfMilliSeconds: Int64 = 1): TDateTime;

مثال

uses  DateUtils;

procedure MyIncYear(ThDate: TdateTime; Nb: Integer);
begin
  MyDate := IncYear(ThDate,nb);
end;

:)

#8

لم أجد DateUtils في دلفي 5 لكني وجدت sDateUtils و هي مرفقة مع AlphaSkins

و فيها

function GetKvartal(Value : TDateTime) : integer;

function GetDateOrder(const DateFormat: string): TDateOrder;

function InternalStrToDate(const DateFormat, S: string; var Date: TDateTime): Boolean;

procedure ExtractMask(const Format, S: string; Ch: Char; Cnt: Integer; var I: Integer; Blank, Default: Integer);

function ScanDateStr(const Format, S: string; var D, M, Y: Integer): Boolean;

function ScanDate(const S, DateFormat: string; var Pos: Integer; var Y, M, D: Integer): Boolean;

// from SYSUTILS.PAS

function ScanNumber(const S: string; MaxLength: Integer; var Pos: Integer; var Number: Longint): Boolean;

function ScanChar(const S: string; var Pos: Integer; Ch: Char): Boolean;

procedure ScanBlanks(const S: string; var Pos: Integer);

{$ENDIF} // NOTFORHELP



function LastDayOfPrMonth(D : TDateTime) : TDateTime;

function CurrentYear: Word;

function DaysPerMonth(AYear, AMonth: Integer): Integer;

function DefDateFormat(NormalYears: Boolean): string;

function DefDateMask(BlanksChar: Char; NormalYears: Boolean): string;

function ExpandYear(Year: Integer): Integer;

function ExtractDay(ADate: TDateTime): Word;

function ExtractMonth(ADate: TDateTime): Word;

function ExtractYear(ADate: TDateTime): Word;

function FirstDayOfCurrMonth(D : TDateTime) : TDateTime;

function ValidDate(ADate: TDateTime): Boolean;

function IsValidDate(Y, M, D: Word): Boolean;

function MonthFromName(const S: string; MaxLen: Byte): Byte;

sDateUtils.rar

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#9

خالص الشكر لكل من ساهم فى ايجاد الحل

تحياتى للجميع

الموضوع تم بحمد الله

Comming Soon

#10
Swift كتب:
الموضوع تم بحمد الله

ياريت تخبرنا كيف

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#11

Rober

Many Thanks

Comming Soon

#12

ظهرت مشكلة معى قمت باستبدال المكون DateTimePicker1

بالمكون : JvDBDateEdit1

وذلك لأنى استعملها لقاعدة بيانات فعندما اقوم بالضغط على زر New Record المتمثل فى هذا الأمر

ADOTable1.Insert;

يظهر لى هذا الخطأ

---------------------------
My Program
---------------------------
'' is not a valid date and time.
---------------------------
OK   
---------------------------

لا أعرف كيف اتصرف بصراحة ؟

أنا فسرت الموضوع انى لما بضغط على New Record بتبقى قيمة JvDBDateEdit1 بتبقى فارغة وكدة مينفعش لازم تكون / /

اى مساعدة ؟

Comming Soon

مواضيع مشابهة