-
نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
سلام
ممنون میشم راهنماییم کنید.
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
خب چرا شمسیش رو درج نمی کنی؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
من الگوريتمش رو توي سي شارپ مينويسم زحمت تبديل تابهش رو توي اس كيو ال خودت بكش:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//********* Test ************
MessageBox.Show(Shamsi(2005, 8, 14).ToShortDateString());
MessageBox.Show(todayShamsi().ToShortDateString()) ;
}
private DateTime todayShamsi()
{
DateTime today;
today = DateTime.Today;
string year = today.Year.ToString();
string month = today.Month.ToString();
string day = today.Day.ToString();
int Y = int.Parse(year);
int M = int.Parse(month);
int D = int.Parse(day);
return Shamsi(Y, M, D);
}
private DateTime Shamsi(int Y, int M, int D)
{
if (Y == 0)
Y = 2000;
if (Y < 100)
Y = Y + 1900;
if (Y == 2000)
{
if (M > 2)
{
DateTime Temp = new DateTime(Y, M, D);
Temp = Temp.AddDays(1);
Y = int.Parse(Temp.Year.ToString());
M = int.Parse(Temp.Month.ToString());
D = int.Parse(Temp.Day.ToString());
}
}
if (M < 3 || (M == 3 && D < 21))
Y = Y - 622;
else Y = Y - 621;
switch (M)
{
case 1: if (D < 21)
{
M = 10;
D = D + 10;
}
else
{
M = 11;
D = D - 20;
}
break;
case 2: if (D < 20)
{
M = 11;
D = D + 11;
}
else
{
M = 12;
D = D - 19;
}
break;
case 3:
if (D < 21)
{
M = 12;
D = D + 9;
}
else
{
M = 1;
D = D - 20;
}
break;
case 4:
if (D < 21)
{
M = 1;
D = D + 11;
}
else
{
M = 2; D = D - 20;
}
break;
case 5:
if (D < 22)
{
M = M - 3;
D = D + 10;
}
else
{
M = M - 2;
D = D - 21;
}
break;
case 6:
if (D < 22)
{
M = M - 3;
D = D + 10;
}
else
{
M = M - 2;
D = D - 21;
}
break;
case 7:
if (D < 23)
{
M = M - 3;
D = D + 9;
}
else
{
M = M - 2;
D = D - 22;
}
break;
case 8:
if (D < 23)
{
M = M - 3;
D = D + 9;
}
else
{
M = M - 2;
D = D - 22;
}
break;
case 9:
if (D < 23)
{
M = M - 3;
D = D + 9;
}
else
{
M = M - 2;
D = D - 22;
}
break;
case 10:
if (D < 23)
{
M = 7;
D = D + 8;
}
else
{
M = 8;
D = D - 22;
}
break;
case 11:
if (D < 22)
{
M = M - 3;
D = D + 9;
}
else
{
M = M - 2;
D = D - 21;
}
break;
case 12:
if (D < 22)
{
M = M - 3;
D = D + 9;
}
else
{
M = M - 2;
D = D - 21;
}
break;
}
DateTime Temp1 = new DateTime(Y, M, D);
return Temp1;
}
}
}
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
اينم لينك دانلود تابع ميلادي به شمسي در SQL
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
ببخشیدااا، ولی مگه ما خود آزاری داریم که اینجوری بخوایم تبدیل کنیم؟؟؟
خیلی راحت با توابع SQL CLR میشه از تو خود #C این تابع رو با استفاده از PersianDate ساخت و به SQL انتقال داد!!!
آموزشش هم توی سایت هست!
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
فک کنم من سوالم و واضح مطرح نکردم.
من با تبدبل تاربخ میلادی به شمسی مشکلی ندارم .... فقط چون تاریخ و به صورت میلادی تو فیلد dataetime ذخیره کردم تو datagridview به صورت میلادی نمایش داده میشه.... حالا میخوام بدونم تو رویداد CellFormaing دیتاگرید چی بنویسم که اون ستون تاریخشش به شمسی تبدیل شه...
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
ehsan7007
خب چرا شمسیش رو درج نمی کنی؟
مرسی از پیشنهادت اما
تاربخ شمسی و که نمیتونیم تو فیلد datatime ذخیره کنیم... . و اگه تاریخ و به صورت رشته ذخیره کنم تو query گرفتن دچار مشکل میشم
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
ehsan7007
اگه این یه datagridview باشه و اینن تاریخ شمسی که نشون میده قبلا میلادی بوده باشه .. بله..:چشمک:
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
این datagridview هست و اونم تاریخ شمسیه ولی از اول شمسی ذخیره شده بوده ، بدون تبدیل!!
:چشمک:
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
ehsan7007
این datagridview هست و اونم تاریخ شمسیه ولی از اول شمسی ذخیره شده بوده ، بدون تبدیل!!
:چشمک:
نه پس منظورم این نیست ...
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
کسی نیس که بتونه راهنماییم کنه؟؟؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
من هنوزم نفهمیدم چرا لقمت رو دور دهنت می چرخونی و مستقیم شمسی ذخیره نمی کنی و خودت رو این همه عذاب می ده؟؟؟!!!!!
:عصبانی++:
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
ehsan7007
من هنوزم نفهمیدم چرا لقمت رو دور دهنت می چرخونی و مستقیم شمسی ذخیره نمی کنی و خودت رو این همه عذاب می ده؟؟؟!!!!!
:عصبانی++:
گفتم که!!!!!!!
چون نمیشه تاریخ شمسی و تو datetime ذخیره کر د...:متفکر:
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
دوستان کسیییی هست که بدونه چه جوری میشه تاریخی که به صورت میلادی ذخیره شده رو به شمسی تو دیتاگریدویو نمایش داد؟؟؟ تابع تبدیل مییادی به شمسی و نمی خواما.... کدی که باید تو cellformating توشته شه رو میخوام...
لطفا راهنمایی کنید
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
با سلام خدمت شما دوست عزیز
خوب راحته که شما بیاین تو رویداد CellFormating توسط یه متغیر تاریخ اون سلول از سطرو بگیرید سپس تاریخ و ماه و روزشو جدا و به شمسی برگردونین بعد اینطوری به اون سلول اختصاص بدین
dataGridView1.Rows[e.RowIndex].Cells[2].Value = string.Format("{0}/{1}/{2}", shyear, shmonth, shday);
موفق باشین
بایت بایت
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
متوجه نشدم که چرا اصرار دارید تاریخ رو به شکل میلادی در دیتابیس ذخیره کنید؟ نوع char(10) چه مشکلی برای تان ایجاد می کند؟ یا چه پردازشی می خواهید انجام دهید که با این نوع امکانش نیست؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
منم یه روزه دارم همینه بهشون میگم ، مگه بقیه چیکار می کنن؟!!
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نحوه ی درج کردن اطلاعاتت رو بگو تا برات کد تاریخ شمسی رو بزارم.
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
راستش خیلی از دوستان برنامه نویس نظرشون اینه که بهتره تاریخ به صورت میلادی ذخیره شه... تو تاپیکای اینجام که سرچ کردم به این نتیجه رسیدم..
و چون من اولین باره که برنامه نویسی میکنم ترجیح دادم از تجربه دیگران استفاده کنم...
نطر شما چیه؟؟؟ یا ذخیره به صورت شمسی و تو فیلد char تو مقایسه ها برای گزارشش گیری دچار مشکل نمیشم؟؟??
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
nafisehk
راستش خیلی از دوستان برنامه نویس نظرشون اینه که بهتره تاریخ به صورت میلادی ذخیره شه... تو تاپیکای اینجام که سرچ کردم به این نتیجه رسیدم..
و چون من اولین باره که برنامه نویسی میکنم ترجیح دادم از تجربه دیگران استفاده کنم...
نطر شما چیه؟؟؟ یا ذخیره به صورت شمسی و تو فیلد char تو مقایسه ها برای گزارشش گیری دچار مشکل نمیشم؟؟??
از char(10) استفاده كنيد مشكلي پيش نمياد.
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
با سلام
مشکل استفاده از DateTime در SQL این است که تاریخ های شمسی با 1300 شروع میشوند که در رنج و محدوده ی نوع متغیرهای DateTime نیست. و از سال 1700 شروع میشود .
در نسخه ی 2008 شما با انتخاب نوع متغیر DateTime2 می توانید به راحتی تاریخ های شمسی رو هم درون دیتابیس ذخیره کنید و این خیلی بهتر از حالت Char است.
محدوده ی Datetime2 :
0001-01-01 through 9999-12-31
January 1,1 AD through December 31, 9999 AD
با این روش دیگه نیاز نیست تاریخ رکوردها رو به صورت میلادی درون دیتابیس ذخیره کنید و بعد هنگام نمایش اونها رو به شمسی تبدیل کنید.
دلیل اینکه توصیه میشه از تاریخ های میلادی استفاده بشه کاملا سلیقه ایه. و بیشتر برمیگرده به اینکه خیلی از برنامه نویس ها ترجیه میدهند از نوع متغیر Datetime بجای Char استفاده کنند.
با توجه به اینکه در دات نت تقویم فارسی هست ( حتی تقویم های چینی ، تایلندی و ... هم هست ) هیچ مشکلی در هیچ زمانی برای تبدیل تاریخ های میلادی به شمسی وجود نداره.
از Globalization استفاده کنید و با PersianCalendar دی 2 خط کد تبدیل رو انجام بدید و میتوانید مطمئن باشید مایکروسافت کارشو درست انجام داده برای دیدن نمونه به اینجا سر بزنید :
http://msdn.microsoft.com/en-us/libr...r.getyear.aspx
پیشنهاد من اینه که شما تاریخ ها رو مستقیما به صورت شمسی به دیتابیس منتقل کنید و بیخیال تبدیل کردن بشید. چون هیچ نیازی برای اینکار وجود نداره و یک روش کاملا استاندارد برای اینکار وجود داره.
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
ali_habibi1384
از char(10) استفاده كنيد مشكلي پيش نمياد.
یعنی سه راحتی متونم query بگیرم؟؟؟
بین دو تا تاریخ؟
تو 1 سال خاص؟مثلا نامه های ثبت شده تو سال 90؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
hakim22
با سلام
مشکل استفاده از DateTime در SQL این است که تاریخ های شمسی با 1300 شروع میشوند که در رنج و محدوده ی نوع متغیرهای DateTime نیست. و از سال 1700 شروع میشود .
در نسخه ی 2008 شما با انتخاب نوع متغیر DateTime2 می توانید به راحتی تاریخ های شمسی رو هم درون دیتابیس ذخیره کنید و این خیلی بهتر از حالت Char است.
محدوده ی Datetime2 :
0001-01-01 through 9999-12-31
January 1,1 AD through December 31, 9999 AD
با این روش دیگه نیاز نیست تاریخ رکوردها رو به صورت میلادی درون دیتابیس ذخیره کنید و بعد هنگام نمایش اونها رو به شمسی تبدیل کنید.
دلیل اینکه توصیه میشه از تاریخ های میلادی استفاده بشه کاملا سلیقه ایه. و بیشتر برمیگرده به اینکه خیلی از برنامه نویس ها ترجیه میدهند از نوع متغیر Datetime بجای Char استفاده کنند.
با توجه به اینکه در دات نت تقویم فارسی هست ( حتی تقویم های چینی ، تایلندی و ... هم هست ) هیچ مشکلی در هیچ زمانی برای تبدیل تاریخ های میلادی به شمسی وجود نداره.
از Globalization استفاده کنید و با PersianCalendar دی 2 خط کد تبدیل رو انجام بدید و میتوانید مطمئن باشید مایکروسافت کارشو درست انجام داده برای دیدن نمونه به اینجا سر بزنید :
http://msdn.microsoft.com/en-us/libr...r.getyear.aspx
پیشنهاد من اینه که شما تاریخ ها رو مستقیما به صورت شمسی به دیتابیس منتقل کنید و بیخیال تبدیل کردن بشید. چون هیچ نیازی برای اینکار وجود نداره و یک روش کاملا استاندارد برای اینکار وجود داره.
مرسی دوست خوبم
اما من پروژم تو مراحل پایانیه و من با sql2005 کار کردم دیگه نمیتونم تغییرش بدم:ناراحت:
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
ehsan7007
نحوه ی درج کردن اطلاعاتت رو بگو تا برات کد تاریخ شمسی رو بزارم.
ممنونم اقای اجسان .گفتم من کد شمسی و دارم... فقط نمیدونم چه جوری 1 ستون و که میلادیه شمیسی کنم....مثل اینکه باید نوع داده رو به رشته تغییر بدم.............وای که چقد تلاش کردم و جقد کد نوشتم:قهقهه:
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
دوستان لطفا بگید که اگه تاریخ و به صورت شمسی توchar(10) ذخیره کنم میتونم تو به بازه ی تاریخی یا از 1 ماه خاص یا سال خاص query بگیرم؟؟؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
با سلام خدمت شما
آره میشه میتونی مثلا دستور selecto اینطوری بنویسی :
برای یک ماه خاص :
select * from kala where tsabt='1391/05/03'
برای مابین چند ماه / روز :
select * from kala where tsabt>='1391/01/05' and tsabt<='1391/05/03'
از تکس باکس گرفتن:
select * from kala where tsabt>='" + textBox1.text + "' and tsabt<='" + textBox2.text + "'"
از between هم میتونی استفاده کنی.
موفق باشی
بایت بایت
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
نوشته شده توسط
Youuness
با سلام خدمت شما
آره میشه میتونی مثلا دستور selecto اینطوری بنویسی :
برای یک ماه خاص :
select * from kala where tsabt='1391/05/03'
برای مابین چند ماه / روز :
select * from kala where tsabt>='1391/01/05' and tsabt<='1391/05/03'
از تکس باکس گرفتن:
select * from kala where tsabt>='" + textBox1.text + "' and tsabt<='" + textBox2.text + "'"
از between هم میتونی استفاده کنی.
موفق باشی
بایت بایت
پس ذخیره تاریخ تو datetime به صورت میلادی مزیتش فقط اینه که برای ذخیره از نوع خودش استفاده میش؟؟؟ یعنی فقط تخصصی تره؟؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
سلام،
شما میتونید یه حلقه بزارین و در اون تمام فیلد های تاریخ رو به شمسی تبدیل کنید:
using FarsiLibrary.Utils;
using System.Globalization;
if (Dgv.Rows.Count > 0)
for (int i = 0; i < Dgv.Rows.Count; i++)
{
Dgv.Rows[i].Cells["farsiDate"].Value = ((PersianDate)Convert.ToDateTime(Dgv.Rows[i].Cells["GregorianDate"].Value)).ToString("g");
}
farsiDate : سلولیه که تاریخ شمسی توی اون نمایش داده میشه.
GregorianDate : تاریخ میلادی که به صورت مخفی است.
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
با سلام
دوست من این کار بسیار ساده است
شما باید یک تابع را در گرید فراخوانی کنی
<asp:TemplateField HeaderText="تاریخ خبر" SortExpression="New_Date" Visible="False">
<ItemTemplate>
<div dir="ltr" align="right">
<%# PersianDateTime(Eval("New_Date")) %>
</div>
</ItemTemplate>
حالا این تابع را این طوری در بیهاند بنویس
public static string PersianDateTime(object inputDate)
{
if (inputDate != null)
{
DateTime InputDate = Convert.ToDateTime(inputDate);
return string.Format("{0}", Persia.Calendar.ConvertToPersian(InputDate).Weekda y, PersianTime(InputDate));
}
else
{
return "";
}
}
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
سلام دوست من . به نظرمن تاریخ را رشته ای تعریف نکن چون بعد به درد سر می افتی
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
سلام
منم با نظر wgsfahime موافقم. چون خودم توی پروژه ای از نوع تاریخ زمان گذاشتم و وسط کار برای بعضی عملیات به این نتیجه رسیدم که اگر تاریخ و زمان نبود جواب نمیداد.
در ضمن شما اگر بخوای از نوع char(10) بذاری کنترل صحت ورود داده به گردن شماست ، در حالی که توی نوع DateTime به سادگی می تونی با یه خط کد تابع IsDate رو هم پیاده کنی و از معتبر بودن تاریخ هم خیالت راحت بشه.
دلیل دیگه استفاده از تاریخ میلادی برای پیدا کردن اختلاف بین دو تاریخه که در مورد شمسی اصلا جواب نمیده.
چون به عنوان مثال سال میلادی در ماه دوم 28 روزه در حالی که شمسی 31 روزه است و در مورد اختلاف تاریخ به مشکل خواهید خورد.
پس دوستان عزیز خشت اول را با تاریخ میلادی بگذارید تا بعدا به مشکل نخورید .
تبدیلش به شمسی هم کاری نداره . چه توی برنامه ، چه کریستال ریپورت و چه هر جای دیگه از برنامه
موفق باشید.
-
به نظر من این روش مناسب تره
نقل قول:
نوشته شده توسط
hakim22
با سلام
مشکل استفاده از DateTime در SQL این است که تاریخ های شمسی با 1300 شروع میشوند که در رنج و محدوده ی نوع متغیرهای DateTime نیست. و از سال 1700 شروع میشود .
در نسخه ی 2008 شما با انتخاب نوع متغیر DateTime2 می توانید به راحتی تاریخ های شمسی رو هم درون دیتابیس ذخیره کنید و این خیلی بهتر از حالت Char است.
محدوده ی Datetime2 :
0001-01-01 through 9999-12-31
January 1,1 AD through December 31, 9999 AD
با این روش دیگه نیاز نیست تاریخ رکوردها رو به صورت میلادی درون دیتابیس ذخیره کنید و بعد هنگام نمایش اونها رو به شمسی تبدیل کنید.
دلیل اینکه توصیه میشه از تاریخ های میلادی استفاده بشه کاملا سلیقه ایه. و بیشتر برمیگرده به اینکه خیلی از برنامه نویس ها ترجیه میدهند از نوع متغیر Datetime بجای Char استفاده کنند.
با توجه به اینکه در دات نت تقویم فارسی هست ( حتی تقویم های چینی ، تایلندی و ... هم هست ) هیچ مشکلی در هیچ زمانی برای تبدیل تاریخ های میلادی به شمسی وجود نداره.
از Globalization استفاده کنید و با PersianCalendar دی 2 خط کد تبدیل رو انجام بدید و میتوانید مطمئن باشید مایکروسافت کارشو درست انجام داده برای دیدن نمونه به اینجا سر بزنید :
http://msdn.microsoft.com/en-us/libr...r.getyear.aspx
پیشنهاد من اینه که شما تاریخ ها رو مستقیما به صورت شمسی به دیتابیس منتقل کنید و بیخیال تبدیل کردن بشید. چون هیچ نیازی برای اینکار وجود نداره و یک روش کاملا استاندارد برای اینکار وجود داره.
این روشی که دوست عزیزمون hakim22 فرمودند خیلی بهتر از روش های تغییر به میلادی و شمسی هستش و دردسر و سردرگمی کمتری داره.
از امرو من دیگه از این نوع تاریخ استفاده میکنم.
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
ببخشید این روشی که دوستمون گفتن استفاده از datetime 2 روش بسیار خوبی است.
طبق عکس زیر چطور میتونم وقتی روی دکمه کلیک شد دو تاریخ از هم کم شه اصلا فکر کنید این دو تاریخ توی یک دو تا textbox هست چجور باید از هم کم شن. اون کدهایی که آقای حبیبی توی صفحه اول قرار دادن خیلی مشکل بود ، یه روش میخوام مثل کد زیر.
DateTime myDateTime = DateTime.Parse("01/11/1390 23:10:30");
TimeSpan myTimeSpan = new TimeSpan(0, 1, 2, 4);
DateTime myDateTime8 = myDateTime - myTimeSpan;
Console.WriteLine("myDateTime - myTimeSpan = " + myDateTime8);
Console.ReadKey();
با تشکر
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
سلام
آقای samadblaj میشه توی این روشی که شما استفاده می کنی مقدار تاریخ " 1391/02/31 " رو وارد کنید و ببینید که جواب میده یا نه ؟
اگر مشکلی نداشت و از طرفی تونستید اختلاف بین دو تاریخ رو توی روش خودتون با یک خط کد بنویسید حتما به من هم بگید .
گرچه جواب رو از همین الان میدونم که جواب چیه !!! :چشمک:
اختلاف تاریخ که اصلا جواب درستی نخواهد داد .
خودتون رو برای برخورد با مشکلات مختلف روشتون آماده کنید !!!!
موفق باشید
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
سلام
آقای samadblaj میشه توی این روشی که شما استفاده می کنی مقدار تاریخ " 1391/02/31 " رو وارد کنید و ببینید که جواب میده یا نه ؟
اگر مشکلی نداشت و از طرفی تونستید اختلاف بین دو تاریخ رو توی روش خودتون با یک خط کد بنویسید حتما به من هم بگید .
گرچه جواب رو از همین الان میدونم که جواب چیه !!!
اختلاف تاریخ که اصلا جواب درستی نخواهد داد .
خودتون رو برای برخورد با مشکلات مختلف روشتون آماده کنید !!!!
موفق باشید
سلام رولی جان این روشی که من استفاده کردم از datetime2 استفاده کردم که راحت جواب داد و فرمت رو پذیرفت عکسی رو که مشاهده میکنید هیچ converti نشده و توسط کاربر به صورت شمسی توی فیلد جدول ذخیره شد و به سادگی هم نمایش داد.
DateTime myDateTime = DateTime.Parse("01/11/1390 23:10:30");
TimeSpan myTimeSpan = new TimeSpan(0, 1, 2, 4);
DateTime myDateTime8 = myDateTime - myTimeSpan;
Console.WriteLine("myDateTime - myTimeSpan = " + myDateTime8);
Console.ReadKey();
این کد هم جواب میده روی فرمت یعنی اختلاف رو از این نوع فرمت بدست اورد.
پس مشکلی با مقایسه ها نداره.
فقط تنها مشکلی که دارم میخوام جای خط پایین یه تاریخ وارد کنم و بهم اختلاف رو نمایش بده ولی timespan اختلاف رو بر حسب ساعت نمایش میده (که دردسر داره یه روز رو تبدیل کنیم.)
TimeSpan myTimeSpan = new TimeSpan(0, 1, 2, 4);
این نوع تاریخ خیلی مناسب و کارامده . شما مشکلتون چیه وقتی راحت میشه ذخیره کرد راحت توسط TimeSpan اختلاف رو بدست آورد پس مشکل کجاست؟
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
توابع تاریخ
https://barnamenevis.org/showthread.p...=1#post1591589
این متودها فقط با تاریخ شمسی کار میکنن و برای دیتابیس هایی هستن که تاریخ شمسی رو ذخیره میکنن.
سرعت این روش فوق العاده بیشتر از ذخیره کردن ه تاریخ ه میلادی و تبدیل به شمسیه
EDIT:
روش سریعتر استفاده از یک smallint هست با دقت بالا و 127 سال اعتبار که فکر نکنم کسی اینجا بهش علاقه داشته باشه
struct SmallDate {
short Value;
int GetDay() { return Value & 0x31; }
int GetMonth() { return (Value >> 5) & 0x15; }
int GetYear() { return Value >> 9; }
}
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
اولا من وب رو نگفتم ، چون اصلا زمینه ی کارم نیست و اطلاعاتی هم ندارم ازش
دوما کجای این چیزی که نوشتی dateTime2 هستش ؟
من که فرقی نمی بینم
از طرفی چیزی که گفتم رو تست کردین ؟
می دونم که اشتباهه
چون تاریخ شمسی در کار نیست ، بلکه فقط سال میلادی رو عقب می کشه
پس روز های ماه های میلادی و سال کبیسه بر حسب میلادی خواهد بود.
تلاش نکن که محصول مایکروسافت رو ایرانی نشون بدی !!!!! بهش نمیاد!!!!!
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
نقل قول:
اولا من وب رو نگفتم ، چون اصلا زمینه ی کارم نیست و اطلاعاتی هم ندارم ازش
دوما کجای این چیزی که نوشتی dateTime2 هستش ؟
من که فرقی نمی بینم
از طرفی چیزی که گفتم رو تست کردین ؟
می دونم که اشتباهه
چون تاریخ شمسی در کار نیست ، بلکه فقط سال میلادی رو عقب می کشه
پس روز های ماه های میلادی و سال کبیسه بر حسب میلادی خواهد بود.
تلاش نکن که محصول مایکروسافت رو ایرانی نشون بدی !!!!! بهش نمیاد!!!!!
دوست عزیز شما انگاری اطلاع ندارید.
ببینید تاریخ datetime سری اول اگه اشتب نکنم از 1700 شروع میشد که ما نیاز به حدود 1200 داریم اگر ضرفیت datetime سری اول پایین بود همه ی ما ازش استفاده میکریم و نیازی نبود که از nvarchar و از این قبیل استفاده کنیم. و نکته دوم این تاریخ رو عقب نمیکشه !!! شما وقتی برای برنامه تون میزارید فاکتور سال 1390 رو میخوام این گزارش فقط فقط با تاریخ برنامه شما ست میشه نا با تاریخ سیستم.
من از nvarchar استفاده کردم اما این نوع تاریخ عالیه. و در بدترین حالت هم هیچ مشکلی برای شما وجود نمیاد (مثل bigint نسبت به int).
و نکته آخر مایکرو سافت و ایرانی ! نه عزیزم فقط زبان ما فارسی نیست این برای کشور های دیگه خاورمیانه از قبیل تاجیکستان ، افغانستان و فکر کنم پاکستان هم هست برای ایناست. و اگر نه اگه فقط زبان ما پارسی بود خبری هم از PersianCalender نبود.
موفق باشید
-
نقل قول: نمایش تاریخ میلادی ذخیره شده در فیلد datetime به شکل شمسی در datagridview
خوب روش تعریف این متغیر چه شکلیه ؟
و توی کدوم نسخه از ویژوال استودیو وجود داره ؟