PDA

View Full Version : شمارس روز



worldvomputer
چهارشنبه 23 آذر 1390, 11:51 صبح
با سلام خدمت دوستان من میخوام یه برنامه بنویسیم که تعداد روز چک تاریخ گذشته رو حساب کنه

مثلا اگر تاریخ چک روز20/9/90 بود و این چک پاس نشده بود رو تعداد روزش رو بگه مثلا بگه که10 روز یا 2 روز از تاریخ اصلی چک گذشته اینرو نشون بده واجبه ها دوستان عنایتی داشته باشند
یا علی

zarrinnegar
چهارشنبه 23 آذر 1390, 13:21 عصر
اول باید جدول چک ها رو بر اساس پاس نشده و قبل از تاریخ روز فیلتر کنی
بعدش میتونی از این پروسیجر استفاده کنی و مقدار های ماه و روز فعلی رو و ماه و روز چک رو بهش بدی حساب کنه بگه چند روز مانده بعد نشون بدی


public int checkday(int check_day,int check_mah,int now_day, int now_mah)
{
int gday=0;
if (now_day < check_day)
{
if (now_mah > check_mah)
{
gday = (((now_mah - check_mah) * 30)-check_day)+now_day;
}
}
else
{
gday = gday + (now_day - check_day);
if (now_mah > check_mah)
gday = gday + (now_mah - check_mah) * 30;
}
 
 
return gday;
}

fan2005
پنج شنبه 24 آذر 1390, 17:09 عصر
میتونی این تابع را تو C# پیاده ساری کنی

USE [xxx]
GO
/****** Object: UserDefinedFunction [dbo].[ShamsiDateDiff] Script Date: 12/15/2011 17:32:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER FUNCTION [dbo].[ShamsiDateDiff] (@PDate1 nvarchar(12),@PDate2 nvarchar(12))
RETURNS bigint
AS
BEGIN
DECLARE @ISLeap bit

DECLARE @EYear as Integer
DECLARE @EMonth as Integer
DECLARE @EDay as Integer
DECLARE @EAllDays as int

set @EYear= cast((substring(@PDate2 ,0,5))as int)
set @EMonth= cast((substring(@PDate2 ,6,2))as int)
set @EDay= cast((substring(@PDate2 ,9,2))as int)

DECLARE @SAllDays as int
DECLARE @SYear as Integer
DECLARE @SMonth as Integer
DECLARE @SDay as Integer
set @SYear= cast((substring(@PDate1 ,0,5))as int)
set @SMonth= cast((substring(@PDate1 ,6,2))as int)
set @SDay= cast((substring(@PDate1 ,9,2))as int)


select @EAllDays = case when @EMonth <=6
then (@EMonth-1)*31+@EDay
else case when @EMonth >6 and @EMonth<=12
then 6*31+ (@EMonth-7)*30+@EDay
end
end,
@SAllDays = case when @SMonth <=6
then (@SMonth-1)*31+@SDay
else case when @SMonth >6 and @SMonth<=12
then 6*31+ (@SMonth-7)*30+@SDay
end
end

declare @diff int
set @diff =@EAllDays-@SAllDays
declare @i int set @i =0
while @SYear+@i<@EYear
begin
select @diff= case
when dbo.IsLeap(@SYear+@i)=1
then @diff+366
else @diff+365
end
set @i=@i+1
end


Return @diff
end

linux
پنج شنبه 24 آذر 1390, 17:29 عصر
با سلام خدمت دوستان من میخوام یه برنامه بنویسیم که تعداد روز چک تاریخ گذشته رو حساب کنه

مثلا اگر تاریخ چک روز20/9/90 بود و این چک پاس نشده بود رو تعداد روزش رو بگه مثلا بگه که10 روز یا 2 روز از تاریخ اصلی چک گذشته اینرو نشون بده واجبه ها دوستان عنایتی داشته باشند
یا علی
در سی شارپ تاریخ را تبدیل کنید به میلادی از تاریخ امروز کم کنید همین!