توابع کار با تاریخ و زمان

ساختن تاریخ با متغیر های روز، ماه و سال

اگر روز در متغیر iDateVar ، و ماه در متغیر iMonthVar ، ذخیره شده باشند، نمی توان عبارتی مانند

#iMonthVar/iDateVar/99#

یا مشابه آن را به کار برد.

تابع DateSerial() ، یک سال و ماه و روز را به عنوان آرگومان می گیرد و آن ها را با هم در داخل یک متغیر از نوع Date برمیگرداند.
بدیهی است که در این روش، سال، ماه، و روز می توانند به صورت متغیر، مقادیر تعیین شده و یا عبارت باشند.

dtImportantDate = DateSerial(67, 5, iDayVar)

 مثال فوق، یک تاریخ شامل روز iDayVar ، ماه می (5)، و سال 1967 را در متغیر dtImportantDate ذخیره می کند.

DateSerial ( Year, Month, Day)

مثلا عبارت زیر مقدار #4/28/99# را برمیگردند (به عبارت دیگر، سه روز قبل از اول می 1999)

DateSerial (99, 5, 1 - 3)

ساختن زمان با متغیر های ساعت، دقیقه، و ثانیه

این کار به کمک تابع TimeSerial انجام می شود.

TimeSerial(Hour, Minute, Second)

عبارت زیر، مقدار 2:54:40 AM را برمیگرداند. یعنی 5 دقیقه و 20 ثانیه قبل از ساعت 3 بامداد.

TimeSerial("3", 0 - 5, 0 - 20)

عبارت TimeSerial(5, 3, 29) ساعت 5 و سه دقیقه و بیست و نه ثانیه را برمیگرداند.

تابع Timer

همان طور که قبلا هم گفتم، این تابع تعداد ثانیه هایی که از نیمه شب تا اکنون گذشته است را برمیگرداند.
این تابع، برای تعیین کردن مقدار زمانی که اجرا شدن یک قطعه کد می گیرد، می تواند مفید باشد.

iSartTime = Timer
'Code to determine its execution time....
iEndTime = Tmer
iSecondsElapsed = iEndTime - iStartTime

به دست آوردن روز، ماه، و سال و ... از روی متغیر date

فرض کنید یک متغیر از نوع Date داریم. می خواهیم بدانیم که این متغیر به چه روزی یا به چه سالی اشاره می کند. برای این منظور، از تابع DatePart استفاده می کنیم.

DatePart(InterVal, dtDate, firstDayOfWeek, firstWeekOfYear)

 1 - آرگومان اول این تابع (Interval)، یک رشته است و مشخص می کند که چه چیزی را از تاریخ می خواهیم استخراج کنیم. مقادیر مورد قبول عبارتند از:

جدول مقادیر InterVal
"yyyy" سال
"q" ربع (ربع ساعت)
"m" ماه
"y" چندمین روز از سال
"d چندمین روز از ماه
"w" روز هفته
"ww" چندمین هفته ی سال
"h" ساعت
"n" دقیقه
"s" ثانیه

2 - آرگومان دوم (dtDate)، تاریخی است که می خواهیم اجزا آن را استخراج کنیم.

 3 - آرگومان سوم (firstDayOfWeek)، اختیاری است و اجازه می دهد که مشخص کنیم برای محاسبه، روز اول هفته را مطابق میل خود تنظیم کنیم. این کار، هنگام استفاده از آرگومان InterVal با مقدار "w" یا "ww" مفید است. مقادیر قابل قبول برای firstDayOfWeek، یک سری ثوابت از پیش تعریف شده هستند.

جدول ثوابت مربوط به روز های هفته
 vbUseSystem = 0  National Language Support API Setting
 vbSunday = 1  یکشنبه (پیش فرض)
 vbMonday = 2  دوشنبه
 vbTuesday = 3  سه شنبه
 vbWednesday = 4  چهارشنبه
 vbThursday = 5  پنج شنبه
 vbFriday = 6  جمعه
 vbSaturday = 7  شنبه

4 - آرگومان چهارم (firstWeekOfYear) نیز اختیاری است. و اجازه می دهد اولین هفته ی سال را تعیین کنیم. مقادیر مجاز آن در جدول زیر نوشته شده است:

جدول ثابت های مربوط به اولین هفته ی سال
 vbUseSystem  استفاده از تنظیمات سیستم
 vbFirstJan1  هفته ی اول ژانویه
 vbFirstFourDays  چهار روز اولین هفته ی سال جدید
 vbFirstFullWeek  روز اول تمامی هفته ها

چند مثال:

DatePart("m", #9/17/67#)

مقدار 9 را برمیگرداند که نشان دهنده ی سپتامبر - ماه نهم سال - است.

DatePart("y", #9/21/96#)

مقدار 265 را برمی گرداند که نشان می دهد تا 21 سپتامبر، 265 روز از سال گذشته است.

DatePart("w", #9/18/99#, 3)

یعنی روز اول هفه را سه شنبه در نظر گرفته ایم. و چون طبق تقویم، 9/18/99 شنبه بوده، پس عدد 5 را برمیگرداند.

DatePart("w", #9/18/99#, 6)

عدد 2 برگردانده می شود. عدد 6 نشان می دهد که جمعه را به عنوان روز اول هفته در نظر گرفته ایم.

DatePart("ww", #9/18/99#, 2, 1)

یعنی دوشنبه به عنوان روز اول هفته و اول ژانویه به عنوان اولین هفته ی سال در نظر گرفته شده است.

 

روش های دیگر برای استخراج روز، ماه، و ... از تاریخ

1 - تابع  Year یک تاریخ را میگیرد و سال مربوط به آن را به صورت عدد صحیح برمیگرداند.

2 - تابع Month یک تاریخ را میگیرد و ماه مربوط به آن را به صورت عدد صحیح برمیگرداند.

3 - تابع MonthName

MonthName (MonthNumber, Abbrev)

این تابع یک رشته شامل نام ماه برمیگرداند. آرگومان های آن به قرار زیر است:

  1. آرگومان اول (MonthNumber) یک عدد صحیح بین 1 تا 12 است (شماره ی ماه)
  2. آرگومان دوم (Abbrev) یک آرگومان اختیاری است که اگر False باشد، نام ماه به طور کامل، و اگر True باشد، نام ماه به صورت اختصاری برگردانده می شود. در حالت پیش فرض False است. یعنی در حالت پیش فرض نام ماه به طور کامل برگردانده می شود.

مثال:

MonthName (11)

مقدار رشته ای "November" را برمیگرداند.

MonthName(11, True)

مقدار رشته ای "Nov" را برمیگرداند.

4 - تابع day() بخش روز یک تاریخ را به صورت عدد صحیح برمیگرداند.

5 - تابع WeekDay مشخص می کند که تاریخ فوق، روز چندم از هفته است.

6 - تابع Hour یک زمان را به عنوان آرگومان می گیرد و بخش ساعت آن را بر میگرداند

7 - تابع Minute بخش دقیقه ی یک زمان را برمیگرداند.

8 - تابع Second بخش ثانیه ی مربوط به یک زمان را برمیگرداند.

 

نکته ی انحرافی 1
شاید این جا جای این نکته نباشد، اما به هر حال لازم است که بدانید فرمت تاریخ های میلادی به چه صورت است.
وقتی می نویسیم 9/18/99 یعنی 18 نوامبر سال 1999. فرمت تاریخ های میلادی به صورت زیر است:
سال / روز / ماه

می توان سال را حذف کرد. مثلا 9/18 هیجدهم نوامبر را مشخص می کند: روز / ماه

نکته ی انحرافی 2
ممکن است به یاد داشته باشید که برای رجوع به یک تاریخ معین، آن را در داخل دو علامت # قرار می دادیم. وقتی با این توابع کار می کنید ممکن است سال را حذف کنید و اجازه دهید که سیستم سال فعلی را در نظر بگیرد.
اگر چنین قصدی دارید، تاریخ را بین دو علامت کوتیشن قرار دهید. برای مثال تاریخ #9/18/99# وقتی به کار می رود که شما مخصوصا به تاریخ 18 نوامبر سال 1999 تاکید دارید. اگر به جای آن، 18 نوامبر سال جاری را در نظر دارید، باید تاریخ را به فرمت "9/18" بنویسید.
با این کار، کد شما به صورت خودکار در هر سال کار خواهد کرد و لازم نمی شود که هر سال آن را تغییر دهید.


افزودن به یک تاریخ با تابع DateAdd

DateAdd (interval, number, date)

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

(خبر خوشحال کننده این است که تمامی توابع تاریخ VBScript به صورت درونی از استثنا های تاریخی مثل سال های کبیسه و یا ماه هایی که تعداد روز هایشان متفاوت است، پشتیبانی می کنند. اگر شما می خواستید بدون استفاده از این توابع، محاسبان تاریخی انجام دهید، قابل تصور است که چقدر کارتان سخت و دشوار می شد.)

در تابع DateAdd، آرگومان اول (interval) مشخص می کند که می خواهیم به کدام مؤلفه ی تاریخ بیافزاییم. مثلا می خواهیم به روز اضافه کنیم یا به ماه یا به سال یا ... . مقادیر این آرگومان در جدول مقادیر interval آمده است.

آرگومان دوم (Number) هم مشخص می کند که چند واحد می خواهیم به مؤلفه یInterval  اضافه کنیم. (چند تا Interval  می خواهیم به تاریخ اضافه کنیم)

آرگومان سوم (date) هم تاریخ مورد نظر است که می خواهیم به آن مقداری را اضافه کنیم.

مثلا DateAdd(“m”, 1, #12/7/90#) مشخص می کند که می خواهیم با تاریخ 12/7/90 یک ماه بیافزاییم که می شود 13/7/90

مثال ها

DateAdd(“m”, 1, #12/7/90#)   --------------------> 1/7/91
DateAdd(“d”, 1, Date)                -------------------
> روز بعد (فردا)
DateAdd(“yyyy”, 5, #2/7/88#)  -------------------
>  2/7/93
DateAdd()                   --------------------------------
> بدون آرگومان چیزی را برنمی گرداند
DateAdd(“m”, 1, #8/31/99#) ---------------------
> 9/31/99


دسته بندی‌ها: 

دیدگاه‌ها

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

سلام
می خواستم در اکسل فرمولی را بنویسم که تازیخی که در یک ستون می زنم عدد ماه به صورت خود کار یک و دو سه و 4 و 5و6 ماه اضافه شود یعنی در ستون فاکتور که تاریخ را می نویسم به صورت خودکار در تاتون تاریخ چک اضافه شود
ممنونم از راهنمایی شما

افزودن دیدگاه جدید