تقویم شمسی ماهیانه با جاوا اسکریپت

bornaeon

New Member
واقعا ممنونم. کارت خیلی عالی بود. یه سوال داشتم که به پست الکترونیکیه داخله سایتت زدم. اینجا هم میگم. چه جوری میتونم فقط اون خط پائینه پنله تقویمت (یعنی فقط تاریخ روز جاری - مثلا امروز 25 مهر 1385 ) رو داخله یک صفحه ی اچ تی ام ال بزارم؟
بازم ممنون
 

hoom

Active Member
خواهش میکنم، این چیزی که شما خواستین یه موضوع کاملا جدا داره ولی میتونین از فایل ضمیمه استفاده کنید، که کاری رو که میخوایین براتون میکنه

ارادتمند
 

پیوست ها

  • persianDate.zip
    741 بایت · بازدیدها: 164

parscon

New Member
فقط تاریخ باشه و ساعت برداشته بشه !!!!

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

hoom

Active Member
لطفا کنید بفرمایید که چه کار باید کرد که فقط تاریخ ثبت بشه و دیگه زمان نباشه

فایل persianPopupCalendar.js رو باز کنید و تابع pickDate رو در اون پیدا کنید و این خط رو

کد:
  currentCal.form[currentCal.field].value= dDate + ' ' + get2Digits(gd.getHours()) + ':' + get2Digits(gd.getMinutes()) + ':' + get2Digits(gd.getSeconds());

به اینصورت تغییر دهید.

کد:
  currentCal.form[currentCal.field].value= dDate;

ارادتمند
 

سار

New Member
سلام

خیلی ممنون از لطفتون، این یک مشکل عمومی در تمامی مرورگرها است و راهش هم اینه که اون کدی رو تقویم رو به صفحه اضافه میکنه رو به آخر صفحه، قبل از تگ <body/> قرار بدین. اگر نگارش 1.3 تقویم رو از وب سایت مربوطه دانلود کنین میبینید که من توی فایل نمونه هم همینکار رو کرده ام.

ارادتمند

این موضوع رو من از طریق Email به اطلاع شما رساندم ولی اینجا هم عرض میکنم تا هر کدام زود تر دیده شد زودتر به جواب برسم.
ابتدا تبریک می گم به این هم تلاش و فعالیت.
عرض شود که من قصد دارم تا این تقویم شما رو به شکل یک Composite Control برای ASP.Net 2 تبدیل کنم. تمام مراحل کار انجام شده و مشکل در اینجاست که تابع addCalendar که گویا باید فقط و فقط بعد از تگ <Form/> استفاده شود بایستی به شکل دینامیک در برنامه رجیستر بشه. و از اونجایی که ASP.Net به خارج از تگ فرم دسترسی نداره(یا سواد من از ASP.Net کمه) این کار به مشکل برخورده. آیا راهی هست که این کد داخل تگ فرم اجرا بشه؟ اگر این عمل به سرانجام برسه دارای کنترلی خواهیم شد که خیال همه برنامه نویسان WEB را راحت خواهد کرد.
بند آمادگی خودم رو برای انجام این عمل اعلام میکنم ولی چون از کدهای JAVA شما سر در نمیارم به کمک شما نیاز دارم.
من خیلی به انجا نمیام.اگر لطف کنید و به من Email بزنید(به آدرس [email protected]) ممنون خواهم شد.
امیدوارم بار بعد که به اینجا آمدم بتونم کامپوننت Net. این تقویم را برای استفاده همه اینجا قرار بدم.
 
آخرین ویرایش:

hoom

Active Member
این مورد بخاطر این است که کنترل تقویم توسط جاوا اسکریپت بطور داینامیک تشکیل داده شده و به متن وب اضافه میشه که اگر اون خطوط در جایی بغیر از انتهای فایل باشه همین اشکالی رو که میگین رو نشون میده، راستش من اصلا در دات نت سررشته ای ندارم بهمین دلیل نمیتونم کمکتون کنم، ولی اگر در صفحه اول وب سایت من دیده باشین، یه کنترل تقویم شمسی با دات نت معرفی کرده ام که شاید بتونین استفاده کنین.

بازم از حسن توجهتون متشکرم
 

سار

New Member
مشکل فوق با درج کد زیر حل شد.
کد:
<Script Language="JavaScript">
if (window.addEventListener)
    window.addEventListener("load",doOnload,false);
else 
   if (window.attachEvent) 
      window.attachEvent("onload",doOnload);

function doOnload()
{
    addCalendar("calFirstDate", "Select Date", "myFirstDate", "myForm");
 }
</Script>
 

wiesbaden

New Member
استفاده از تقویم در پی اچ پی

ببخشید اما می شود طرز استفاده از این برنامه را در اسکریپهای پی اچ پی هم بدهید؟

مثلا طرز استفاده برای فورومها و یا برنامه های مدیریت محتوا.

و اینکه آیا می شود این تقویم را بع جای تقویمهای دیگر که در اسکریپها به کار گرفته می شود , استفاده کرد؟

اگر نکات خاصی برای استفاده از این تقویم در برنامه های دیگر هست که بگید خیلی خوب می شود , مخصوصا اینکه شخصا خیلی دنبالش هستم.
 

shirini_forush

Well-Known Member
من اسکریپت تبدیل تاریخ شمسی و میلادی رو به زبونهای
C
Js
Php
Tex
#c
و اکشن اسکریپت دارم. حاضرین به غائبین خبر بدن...
 

wiesbaden

New Member
مشکل من

آقا من یک مشکل اساسی دارم اگر کسی بتواند کمک کند , خیلی حال داده.

من در فارسی کردن تقویم برنامه e107 دچار مشکال شدم.

یعنی تقویم این برنامه با dynarch کار می کند که یک فایلی دارد به اسم:

calendar_class.php

که این فایل تمام سیستم را با تقویم مرتبط می کند.

حالا وقتی من به جای تقویم dynarch تقویم جاوا آقای هومن را می گذارم , این فایل

calendar_class.php

نمی فهمد و اصلا تقویم را نشان نمی دهد.

محتویات این فایل calendar_class.php به این قرار است:

PHP:
<?php



define('NEWLINE', "\n");

class DHTML_Calendar
{
	var $calendar_file;
	var $calendar_lang_file;
	var $calendar_setup_file;
	var $calendar_theme_file;
	var $calendar_options;
	var $calendar_img;

	function DHTML_Calendar($stripped = true)
	{
		if ($stripped)
		{
			$this->calendar_file = e_HANDLER.'calendar/calendar_stripped.js';
			$this->calendar_setup_file = e_HANDLER.'calendar/calendar-setup_stripped.js';
		}
		else
		{
			$this->calendar_file = e_HANDLER.'calendar/calendar.js';
			$this->calendar_setup_file = e_HANDLER.'calendar/calendar-setup.js';
		}


		if(file_exists(e_HANDLER.'calendar/language/'.e_LANGUAGE.'.js'))
		{
			$this->calendar_lang_file = e_HANDLER.'calendar/language/'.e_LANGUAGE.'.js';
		}
		else
		{
			$this->calendar_lang_file = e_HANDLER.'calendar/language/English.js';
		}

		if(defined('CALENDAR_IMG'))
		{
			$this->calendar_img = CALENDAR_IMG;
		}
		else
		{
			$this->calendar_img = "<img style='vertical-align:middle; border:0px' src='".e_HANDLER."calendar/cal.gif'  alt='' />";
		}

		if(file_exists(THEME."calendar.css"))
		{
			$this->calendar_theme_file = THEME."calendar.css";
		}
		else
		{
			$this->calendar_theme_file = e_HANDLER."calendar/calendar.css";
		}

		$this->calendar_options = array('ifFormat' => '%Y/%m/%d', 'daFormat' => '%Y/%m/%d');
	}

	function set_option($name, $value) {
		$this->calendar_options[$name] = $value;
	}

	function load_files() {
		return $this->get_load_files_code();
	}

	function get_load_files_code() {
		$code  = ( '<link rel="stylesheet" type="text/css" media="all" href="' . $this->calendar_theme_file . '" />' . NEWLINE );
		$code .= ( '<script type="text/javascript" src="'.$this->calendar_file.'"></script>' . NEWLINE );
		$code .= ( '<script type="text/javascript" src="'.$this->calendar_setup_file.'"></script>' . NEWLINE );
		$code .= ( '<script type="text/javascript" src="'.$this->calendar_lang_file.'"></script>' . NEWLINE );
		return $code;
	}

	function _make_calendar($other_options = array()) {
		$js_options = $this->_make_js_hash(array_merge($this->calendar_options, $other_options));
		$code  = ( '<script type="text/javascript">Calendar.setup({' . $js_options . '});</script>' );
		return $code;
	}

	function make_input_field($cal_options = array(), $field_attributes = array())
	{
		$ret = "";
		$id = $this->_gen_id();
		$attrstr = $this->_make_html_attr(array_merge($field_attributes, array('id'   => $this->_field_id($id), 'type' => 'text')));
		$ret .= '<input ' . $attrstr .'/> ';
		$ret .= "<a href='#' id='".$this->_trigger_id($id)."'>".$this->calendar_img."</a>";
		$options = array_merge($cal_options, array('inputField' => $this->_field_id($id), 'button' => $this->_trigger_id($id)));
		$ret .= $this->_make_calendar($options);
		return $ret;
	}

	/// PRIVATE SECTION

	function _field_id($id) { return 'f-calendar-field-' . $id; }
	function _trigger_id($id) { return 'f-calendar-trigger-' . $id; }
	function _gen_id() { static $id = 0; return ++$id; }

	function _make_js_hash($array) {
		$jstr = '';
		reset($array);
		while (list($key, $val) = each($array))
		{
			if (is_bool($val))
			{
				$val = $val ? 'true' : 'false';
			}
			elseif (!is_numeric($val))
			{
				$val = '"'.$val.'"';
			}
			if ($jstr)
			{
				$jstr .= ',';
			}

			$jstr .= '"' . $key . '":' . $val;
		}
		return $jstr;
	}

	function _make_html_attr($array) {
		$attrstr = '';
		reset($array);
		while (list($key, $val) = each($array))
		{
			$attrstr .= $key . '="' . $val . '" ';
		}
		return $attrstr;
	}
}

?>


حالا خواهشن یکی به من کمک کند , که چطوری این کد را دستکاری کنم که به جای تقویم استاندارد خودش , تقویم جلالی که دوستمان نوشته را بخواند.
 

shirini_forush

Well-Known Member
من php بلد نیستم و مشکل اینو نمیدونم ولی همونطور که گفتم اسکریپت تبدیل تاریخ شمسی و میلادی رو به زبونهای
C
Js
Php
Tex
#c
و اکشن اسکریپت دارم. اگر بخواید شاید بتونید با php ش مشکلتون رو حل کنید.
 

shirini_forush

Well-Known Member
راستی مبحث تبدیل تاریخ میلادی به شمسی و بالعکس مساله ی ساده ای نیست.
برای مثال به این متن توجه کنید که مال بر و بچ صنعتی شریفه:
 

shirini_forush

Well-Known Member
قانون ایران به‌وضوح بیان می‌کند که در محاسبهٔ تقویم باید از سال خورشیدی حقیقی استفاده کرد، که این کار نیازمند محاسبات نجومی برای تعیین نقطهٔ اعتدال فروردین و ظهر شرعی است. مشکل اینجاست که قانون محاسبهٔ تقویم که در سال ۱۳۰۴ شمسی (۱۹۲۵میلادی) تصویب شده، مبهم است. مهمترین مشکل این است که قانون، محل مشاهدهٔ ظهر شرعی را، که برای تعیین روز اول سال ایرانی استفاده می‌شود، مشخص نمی‌کند.

این مسئله باعث شده که تعدادی از ستاره‌شناسان (از جمله رینگولد و دِرشویتز) نصف‌النهاری از تهران، و بقیه (از جمله ایرج‌ ملک‌پور) نصف‌النهار ۵۲٫۵ شرقی را (نصف‌النهاری که ساعت استاندارد ایران را تعیین می‌کند) به عنوان محل تشخیص اولین روز سال در نظر بگیرند. به همین دلیل هیچ‌کس واقعاً نمی‌داند که آیا سال ۱۴۶۹ شمسی کبیسه خواهدبود یا نه. درنتیجه، جز در شرایطی که قانون اصلاح شده و نصف‌النهاری مشخص شود، هر الگوریتمی که مدعی باشد که برای سال ۱۴۶۹ یا سال‌های بعد از آن کاربرد دارد، مکانی را به عنوان محل مشاهده فرض می‌کند که نباید فرض کند.

همچنین، قبل از سال ۱۳۰۴ شمسی، طول ماه‌های ایرانی با طول فعلی آنها متفاوت بود. برای مثال، همهٔ سال‌ها حداقل یک ماه ۳۲ روزه داشتند. به همین دلیل، همهٔ الگوریتم‌هایی که طول فعلی ماه‌ها را پیش فرض قرارمی‌دهند نتایج غلطی برای سال ۱۳۰۳ شمسی و سال‌های قبل از آن به‌دست می‌دهند. مشکلات ذکر شده در بالا عملاً هر الگوریتمی (که بدون جدول داده‌ها برای تعداد روزها در ماه‌های سال ۱۳۰۴ و قبل از آن، کارمی‌کند) را محدود به دورهٔ زمانی سال‌های ۱۴۶۸-۱۳۰۴ شمسی می‌کند. در اسکریپت های من یکی از پراستفاده‌ترین الگوریتم‌های محاسباتی ۳۳ ساله به کار برده ‌شده‌است. این الگوریتم در سراسر دورهٔ ۱۴۶۸-۱۳۰۴ با تقویم رسمی (نجومی) شمسی مطابقت دارد. همچنین این همان الگوریتمی است که در دو نرم‌افزار بین‌المللی، دات نت مایکروسافت و مونوی ناوِل به کار رفته است.

لازم به ذکر است که تقویم ایرانی با الگوریتم محاسباتی ۲۸۲۰ ساله، که بوسیلهٔ احمد بیرَشک و سایرین پیشنهاد داده‌ شده، نسبت به تقویم ۳۳ ساله دقت کمتری دارد: اول این که زودتر از دورهٔ ۳۳ ساله در مطابقت با تقویم نجومی رسمی شکست می‌خورد (اولین شکست در سال ۲۰۲۵ میلادی است)، و دوم این که قاعدهٔ پیشنهاد شده در الگوریتم۲۸۲۰ ساله براساس سال میانگین استوایی پی‌ریزی شده، نه سال میانگین اعتدال فروردین.
 

wiesbaden

New Member
بگذار دیگر

خوب داداش بگذار ببینیم دیگر.

در ضمن شما نمی توانی کمکی در مورد این اسکریپ بکنی؟

اگر کمک کنی , یک حال اساسی دادی , که جبران می کنم.
 

shirini_forush

Well-Known Member
عرض کردم php بلد نیستم. این مطلب رو توی انجمن php ببرید. بعیده جواب نگیرید...
 

shirini_forush

Well-Known Member
برای شما کد php رو گذاشتم. اگر خواستید بگید بقیش رو هم بزارم.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا