نمایش نتایج 1 تا 11 از 11

نام تاپیک: ساخت تقویم شمسی بدون استفاده از کامپوننت

  1. #1
    کاربر دائمی آواتار majid_i68
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    گچساران
    سن
    35
    پست
    267

    ساخت تقویم شمسی بدون استفاده از کامپوننت

    سلام دوستان




    بنده میخوام یه برنامه تقویم شمسی مثل این عکس بدون استفاده از کامپوننت بسازم .. برای نمایش یه تاریخ مشکلی ندارم ولی نمدونم چطور تاریخ های سالها و ماها و روزهای آینده رو نشون بدم و هر کدام متناسب با روزها قرار بگیرند ..ممنون میشم کمک کنید..چند تاپیک رو دیدم اونی نبود که من میخواستم
    عکس های ضمیمه عکس های ضمیمه

  2. #2
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    باید با gdi+ یکم نقاشی کنید!

  3. #3
    کاربر دائمی آواتار majid_i68
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    گچساران
    سن
    35
    پست
    267

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    چطور تاریخ های سالها و ماها و روزهای آینده رو نشون بدم و هر کدام متناسب با روزها قرار بگیرند

  4. #4
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    نقل قول نوشته شده توسط majid_i68 مشاهده تاپیک
    چطور تاریخ های سالها و ماها و روزهای آینده رو نشون بدم و هر کدام متناسب با روزها قرار بگیرند
    عزیز دل برادر مشکل شما ربطی به برنامه نویسی نداره!
    هفته که هفت روز هست ماه هم سی یا سی و یک روز یا ۲۹ روز. شما یک جدول در نظر بگیر ۷*۵ یعنی ۵ ردیف و ۷ ستون از سمت راست هم شنبه و ... تا جمعه را در نظر بگیر. حتما بلد هستید که چطور بفهمید روز اول ماه x چه روزی هست. فکر کن روز اول ماه دوشنبه هست. پس ردیف اول شنبه و یکشنبه مقدار ندارند ولی مقدار دوشنبه ۱ هست همیطور تا آخر خوب شما بگو اولین روز ماهی اگر ۳ شنبه باشه ۲۵ ماه چند شنبه میشه و در کدام ستون و سطر قرار باید بگیرد؟

  5. #5
    کاربر دائمی آواتار majid_i68
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    گچساران
    سن
    35
    پست
    267

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    ممنونم از توضیحات خوب شما ..

    این کلاس توسط یکی از برنامه نویسان آماده شده بود... میخوام بفهمم چطور میشه با این کلاس تقویم شمسی رو نشون نداد..

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Globalization;
    using Regex = System.Text.RegularExpressions.Regex;
    using System.Collections;


    namespace AppPersian
    {
    public struct PersianDate : IComparable,
    IComparable<PersianDate>,
    IComparer,
    IComparer<PersianDate>,
    ICloneable
    {
    #region Fields
    private static readonly PersianCalendar calendar = new PersianCalendar();

    public static readonly PersianDate MinValue = new PersianDate(1, 1, 1);
    public static readonly PersianDate MaxValue = new PersianDate(1500, 12, 29, 11, 59, 59);

    private string[] weekArray;
    private string[] monthsArray;//

    private int year;
    private int month;
    private int day;

    private int hour;
    private int minute;
    private int second;


    private DayOfWeek dayOfWeek;
    #endregion

    #region Ctor




    //}

    public PersianDate(int year, int month, int day, int hour, int minute, int second)
    {

    if (!PersianDate.ValidDate(year, month, day, hour, minute, second))
    throw new ArgumentException("Date time is not valid");

    this.year = year;
    this.month = month;
    this.day = day;
    this.hour = hour;
    this.minute = minute;
    this.second = second;
    weekArray = new string[] { "شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه" };
    monthsArray = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند" };

    var dt = calendar.ToDateTime(year, month, day, hour, minute, second, 0);

    this.dayOfWeek = calendar.GetDayOfWeek(dt);
    }

    public PersianDate(int year, int month, int day) : this(year, month <= 0 ? 1 : month, day <= 0 ? 1 : day, 0, 0, 0) { }
    #endregion

    #region Props
    public int Year
    {
    get { return year; }
    //set
    //{
    // if (!PersianDate.ValidDate(value, month, day, hour, minute, second))
    // throw new ArgumentException("Year is out of range");
    // year = value;
    //}
    }

    public int Month
    {
    get { return month; }
    //set
    //{
    // if (!PersianDate.ValidDate(year, value, day, hour, minute, second))
    // throw new ArgumentException("Month is out of range");
    // month = value;
    //}
    }

    public int Day
    {
    get { return day; }
    //set
    //{
    // if (!PersianDate.ValidDate(year, month, value, hour, minute, second))
    // throw new ArgumentException("Day is out of range");
    // day = value;
    //}
    }

    public int Hour
    {
    get { return hour; }
    //set
    //{
    // if (!PersianDate.ValidDate(year, month, day, value, minute, second))
    // throw new ArgumentException("Day is out of range");
    // hour = value;
    //}
    }

    public int Minute
    {
    get { return minute; }
    //set
    //{
    // if (!PersianDate.ValidDate(year, month, day, hour, value, second))
    // throw new ArgumentException("Day is out of range");
    // minute = value;
    //}
    }

    public int Second
    {
    get { return second; }
    //set
    //{
    // if (!PersianDate.ValidDate(year, month, day, hour, minute, value))
    // throw new ArgumentException("Day is out of range");
    // hour = value;
    //}
    }

    public DayOfWeek DayOfWeek
    {
    get { return dayOfWeek; }
    }

    public static PersianDate Now
    {
    get
    {
    return Parse(DateTime.Now);
    }
    }
    #endregion

    #region Methods

    #region Static Methods

    public static bool ValidDate(int year, int month, int day, int hour, int minute, int second)
    {
    bool result = true;
    try
    {
    calendar.ToDateTime(year, month, day, hour, minute, second, 0);
    }
    catch (ArgumentException) { result = false; }
    return result;
    }

    [Obsolete("please use valid date method ValidDate(1388,05,06,04,10,20) ")]
    public static bool ValidDate(int year, int month, int day)
    {
    bool result = true;
    try
    {
    calendar.ToDateTime(year, month, day, 0, 0, 0, 0);
    }
    catch (ArgumentException) { result = false; }
    return result;
    }

    public static bool ValidDate(PersianDate persianDate)
    {
    return PersianDate.ValidDate(persianDate.Year, persianDate.Month, persianDate.Day, persianDate.Hour, persianDate.Minute, persianDate.Second);
    }

    public static int Compare2Date(PersianDate persianDate1, PersianDate persianDate2)
    {


    if (persianDate1.year > persianDate2.Year) return 1;
    else if (persianDate1.year < persianDate2.Year) return -1;

    if (persianDate1.month > persianDate2.Month) return 1;
    else if (persianDate1.month < persianDate2.Month) return -1;

    if (persianDate1.day > persianDate2.Day) return 1;
    else if (persianDate1.day < persianDate2.Day) return -1;

    if (persianDate1.hour > persianDate2.hour) return 1;
    else if (persianDate1.hour < persianDate2.hour) return -1;

    if (persianDate1.minute > persianDate2.Minute) return 1;
    else if (persianDate1.minute < persianDate2.Minute) return -1;

    if (persianDate1.second > persianDate2.Second) return 1;
    else if (persianDate1.second < persianDate2.Second) return -1;

    return 0;
    }

    public static PersianDate Parse(DateTime date)
    {
    PersianDate pd = new PersianDate(
    calendar.GetYear(date),
    calendar.GetMonth(date),
    calendar.GetDayOfMonth(date),
    calendar.GetHour(date),
    calendar.GetMinute(date),
    calendar.GetSecond(date));
    pd.dayOfWeek = calendar.GetDayOfWeek(date);
    return pd;

    }

    public static PersianDate Parse(string dateString)
    {
    return PersianDate.MinValue;


    }
    #endregion

    #region Public Methods
    public PersianDate AddHours(int value)
    {
    try
    {
    return (PersianDate)(((DateTime)this).AddHours(value));
    }
    catch (Exception ex) { throw ex; }
    }

    public PersianDate AddMinutes(int value)
    {
    try
    {
    return (PersianDate)(((DateTime)this).AddMinutes(value));
    }
    catch (Exception ex) { throw ex; }
    }

    public PersianDate AddSeconds(int value)
    {
    try
    {
    return (PersianDate)(((DateTime)this).AddSeconds(value));
    }
    catch (Exception ex) { throw ex; }
    }

    public PersianDate AddDays(int value)
    {
    try
    {
    return (PersianDate)(((DateTime)this).AddDays(value));
    }
    catch (Exception ex) { throw ex; }
    }

    public PersianDate AddMonths(int value)
    {
    try
    {
    return (PersianDate)(((DateTime)this).AddMonths(value));
    }
    catch (Exception ex) { throw ex; }
    }

    public PersianDate AddYears(int value)
    {
    try
    {
    return (PersianDate)(((DateTime)this).AddYears(value));
    }
    catch (Exception ex) { throw ex; }
    }

    public int GetDaysInMonth()
    {
    return calendar.GetDaysInMonth(year, month);
    }
    public int GetDaysInYear()
    {
    return calendar.GetDaysInYear(year);
    }

    #endregion

    #region internal Method(s)
    internal PersianDate GetLastSaturday()
    {
    PersianDate date = AddDays(-(day + 1));
    return date.AddDays(-(GetWeekNo(date.dayOfWeek) - 1));
    }
    #endregion

    #region Private Method(s)
    private int GetWeekNo(DayOfWeek week)
    {
    switch (week)
    {
    case DayOfWeek.Saturday:
    return 1;
    case DayOfWeek.Sunday:
    return 2;
    case DayOfWeek.Monday:
    return 3;
    case DayOfWeek.Tuesday:
    return 4;
    case DayOfWeek.Wednesday:
    return 5;
    case DayOfWeek.Thursday:
    return 6;
    case DayOfWeek.Friday:
    return 7;
    }
    return -1;
    }
    #endregion

    #region Override Methods

    /// <summary>
    /// for example ToString(yyyy-MM-dd hh:mm:ss);
    /// </summary>
    /// <param name="format"></param>
    /// <returns></returns>
    public string ToString(string format)
    {

    format = Regex.Replace(format, "dd", day.ToString("00"));
    format = Regex.Replace(format, "MM", month.ToString("00"));
    format = Regex.Replace(format, "yyyy", year.ToString("0000"), System.Text.RegularExpressions.RegexOptions.Ignore Case);
    format = Regex.Replace(format, "DD", weekArray[GetWeekNo(calendar.GetDayOfWeek((DateTime)this)) - 1]);
    format = Regex.Replace(format, "ND", weekArray[GetWeekNo(dayOfWeek) - 1]);
    format = Regex.Replace(format, "NM", monthsArray[month - 1]);

    format = Regex.Replace(format, "hh", hour.ToString("00"));
    format = Regex.Replace(format, "mm", minute.ToString("00"));
    format = Regex.Replace(format, "ss", second.ToString("00"));

    return format;
    }

    public override string ToString()
    {
    return string.Format("{0:D4}/{1:D2}/{2:D2} {3:D2}:{4:D2}:{5:D2}", year, month, day, hour, minute, second);
    }

    public override bool Equals(object obj)
    {
    if (obj is PersianDate)
    return ((PersianDate)obj) == this;
    return false;
    }

    public override int GetHashCode()
    {
    return this.ToString().GetHashCode();
    }
    #endregion

    #endregion

    #region Operators
    public static bool operator ==(PersianDate persianDate1, PersianDate persianDate2)
    {


    return (
    persianDate1.Second == persianDate2.Second &&
    (persianDate1.Minute == persianDate2.Minute) &&
    (persianDate1.Hour == persianDate2.Hour) &&
    (persianDate1.Day == persianDate2.Day) &&
    (persianDate1.Month == persianDate2.Month) &&
    (persianDate1.Year == persianDate2.Year)

    );



    }

    public static bool operator !=(PersianDate persianDate1, PersianDate persianDate2)
    {

    return !(
    persianDate1.Second == persianDate2.Second &&
    (persianDate1.Minute == persianDate2.Minute) &&
    (persianDate1.Hour == persianDate2.Hour) &&
    (persianDate1.Day == persianDate2.Day) &&
    (persianDate1.Month == persianDate2.Month) &&
    (persianDate1.Year == persianDate2.Year)
    );
    }

    public static bool operator >(PersianDate persianDate1, PersianDate persianDate2)
    {
    return PersianDate.Compare2Date(persianDate1, persianDate2) == 1;
    }

    public static bool operator <(PersianDate persianDate1, PersianDate persianDate2)
    {
    return PersianDate.Compare2Date(persianDate1, persianDate2) == -1;
    }

    public static bool operator >=(PersianDate persianDate1, PersianDate persianDate2)
    {
    int res = PersianDate.Compare2Date(persianDate1, persianDate2);
    return res == 1 || res == 0;
    }

    public static bool operator <=(PersianDate persianDate1, PersianDate persianDate2)
    {
    int res = PersianDate.Compare2Date(persianDate1, persianDate2);
    return res == -1 || res == 0;
    }
    #endregion

    #region Implicit Casting

    public static implicit operator DateTime(PersianDate persianDate)
    {
    if (PersianDate.ValidDate(persianDate))
    return calendar.ToDateTime(persianDate.Year, persianDate.Month, persianDate.Day, persianDate.Hour, persianDate.Minute, persianDate.Second, 0);
    return DateTime.MinValue;
    }

    public static implicit operator PersianDate(DateTime date)
    {
    if (date.Equals(DateTime.MinValue))
    return MinValue;
    return Parse(date);
    }

    #endregion

    #region IComparable Members

    public int CompareTo(object obj)
    {
    if (!(obj is PersianDate))
    new ArgumentException("obj is not PersianDate");

    return CompareTo((PersianDate)obj);
    }

    #endregion

    #region IComparable<PersianDate> Members

    public int CompareTo(PersianDate other)
    {
    return PersianDate.Compare2Date(this, other);
    }

    #endregion

    #region IComparer Members

    public int Compare(object x, object y)
    {
    if (!(x is PersianDate))
    throw new ArgumentException("x is not PersianDate");
    if (!(y is PersianDate))
    throw new ArgumentException("y is not PersianDate");

    return PersianDate.Compare2Date((PersianDate)x, (PersianDate)y);
    }

    #endregion

    #region IComparer<PersianDate> Members

    public int Compare(PersianDate x, PersianDate y)
    {
    return PersianDate.Compare2Date(x, y);
    }

    #endregion

    #region ICloneable Members

    public object Clone()
    {
    return (PersianDate)this.MemberwiseClone();
    }

    #endregion

    }//end class
    }

  6. #6
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    این کد به شما کمک میکند که تبدیل تاریخ میلادی به شمسی را راحتتر انجام دهید. اگر جواب سوال که پرسیدم را بدهید کلی مشکل برایتان حل خواهد شد

  7. #7
    کاربر دائمی آواتار majid_i68
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    گچساران
    سن
    35
    پست
    267

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    من روز از هفته و روز از سال رو میدونم ..اما برای روز از ماه نمیدونم چیکار کنم... این کلاسی که دادم ظاهرا کامل هست و آماده استفاده .چطور باید ازش استفاده کرد و مقدار رو ازش گرفت..

  8. #8
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    نقل قول نوشته شده توسط majid_i68 مشاهده تاپیک
    من روز از هفته و روز از سال رو میدونم ..اما برای روز از ماه نمیدونم چیکار کنم... این کلاسی که دادم ظاهرا کامل هست و آماده استفاده .چطور باید ازش استفاده کرد و مقدار رو ازش گرفت..
    از کلاس PersianCalendar می تونید استفاده کنید روز هفته را هم بدست بیارید. اطلاعات بیشتر MSDN

  9. #9
    کاربر دائمی آواتار majid_i68
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    گچساران
    سن
    35
    پست
    267

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    کسی نبود از این کلاس استفاده کنه

  10. #10

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    سلام
    دوست عزیز دانلود این کامپوننت را بزارین ما هم آزمایش کنیم ببینیم چطوریه ؟

  11. #11

    نقل قول: ساخت تقویم شمسی بدون استفاده از کامپوننت

    --------------------------------------------
    آخرین ویرایش به وسیله rasol_afkham : پنج شنبه 01 اسفند 1392 در 22:37 عصر

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: پنج شنبه 02 شهریور 1391, 13:28 عصر
  2. ساخت کلید ویستایی بدون استفاده از فلش در وب
    نوشته شده توسط Rejnev در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: سه شنبه 13 مرداد 1388, 00:03 صبح
  3. سوال: ساخت مقدمات سرور بدون استفاده از سرولت یا JSP
    نوشته شده توسط JAVA_AP در بخش Java SE : نگارش استاندارد جاوا
    پاسخ: 1
    آخرین پست: دوشنبه 15 تیر 1388, 20:02 عصر
  4. نوشتن برنامه تلفنی با قابلیت تماس و شماره گیری بدون استفاده از کامپوننت های خاص دلفی
    نوشته شده توسط K.Mohammadreza در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 0
    آخرین پست: شنبه 19 اردیبهشت 1388, 16:34 عصر
  5. پاسخ: 1
    آخرین پست: یک شنبه 10 شهریور 1387, 10:16 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •