سایتهایی هستند روی اینترنت و نرمافزارهایی قابل دانلود رایگان اینکه یک تاریخ را تبدیل نماید بین سه نوع تاریخی که ما معمولاً با آنها درگیر هستیم شمسی و قمری و میلادی
با اضافه شدن کلاس PersianCalendar در داتنت نیز تبدیل تاریخ آسان گشته اما هنوز هم روی اینترنت ندیدم ابزاری باشد مناسب برای تبدیل گروهی از تاریخها به صورت دستهای اینکه حجمی بدهی و حجمی بگیری کاری که زیاد پیش میآید وقتی در حال تبدیل وهلهای و یکباره اطلاعات هستیم
چنین ابزاری نوشتم در این نشانی http://pdmcenter.ir/convert (هاست تمام شد و دلار هم گران، نشد دیگر تمدید کنم و فعلاً روی هواست!) ابتدا برای خود البته کاری داشتم و نیاز بود اما بعدش گفتم عمومی باشد تا به کار دیگران نیز شاید بیاید خوبیاش: یکهو کلّی تاریخ را یکباره تبدیل میکند میان همین سه نوع تاریخ معهود محصول را اگر بچسبانی در اکسل به سادگی در دو ستون قرار میگیرد ستون مبدأ و ستون مقصد!
از همین Namespace معروف داتنت هم استفاده کردم یعنی System.Globalization کدها را هم میگذارم اینجا به زبان VB است شاید کسی نداند و بخواهد در کدنویسی خود به کار بندد برای تبدیل میلادی به شمسی:
Function M2SH(str As String) As String "2017/2/8 => 1395/11/19 Dim f As System.Globalization.PersianCalendar = New System.Globalization.PersianCalendar M2SH = f.GetYear(str) & "/" & f.GetMonth(str) & "/" & f.GetDayOfMonth(str) End Function
و برای میلادی به قمری:
Function M2GH(str As String) As String "2017/2/8 => 1438/5/12 Dim h As System.Globalization.HijriCalendar = New System.Globalization.HijriCalendar M2GH = h.GetYear(str) & "/" & h.GetMonth(str) & "/" & h.GetDayOfMonth(str) End Function
شمسی به میلادی:
Function SH2M(str As String) As String "1395/11/19 => 2017/2/8 Dim f As System.Globalization.PersianCalendar = New System.Globalization.PersianCalendar Dim yyyy As Integer = DatePart("yyyy", str) Dim mm As Integer = DatePart("m", str) Dim dd As Integer = DatePart("d", str) Dim d As DateTime = f.ToDateTime(yyyy, mm, dd, 0, 0, 0, 0) SH2M = d.ToShortDateString() End Function
شمسی به قمری:
Function SH2GH(str As String) As String "1395/11/19 => 1438/5/12 Dim f As System.Globalization.PersianCalendar = New System.Globalization.PersianCalendar Dim h As System.Globalization.HijriCalendar = New System.Globalization.HijriCalendar Dim yyyy As Integer = DatePart("yyyy", str) Dim mm As Integer = DatePart("m", str) Dim dd As Integer = DatePart("d", str) Dim d As DateTime = f.ToDateTime(yyyy, mm, dd, 0, 0, 0, 0) Dim mi As DateTime = d.ToShortDateString() SH2GH = h.GetYear(mi) & "/" & h.GetMonth(mi) & "/" & h.GetDayOfMonth(mi) End Function
قمری به میلادی:
Function GH2M(str As String) As String "1438/5/12 => 2017/2/8 Dim h As System.Globalization.HijriCalendar = New System.Globalization.HijriCalendar Dim yyyy As Integer = DatePart("yyyy", str) Dim mm As Integer = DatePart("m", str) Dim dd As Integer = DatePart("d", str) Dim d As DateTime = h.ToDateTime(yyyy, mm, dd, 0, 0, 0, 0) GH2M = d.ToShortDateString() End Function
و در نهایت هم قمری به شمسی:
Function GH2SH(str As String) As String "1438/5/12 => 1395/11/19 Dim f As System.Globalization.PersianCalendar = New System.Globalization.PersianCalendar Dim h As System.Globalization.HijriCalendar = New System.Globalization.HijriCalendar Dim yyyy As Integer = DatePart("yyyy", str) Dim mm As Integer = DatePart("m", str) Dim dd As Integer = DatePart("d", str) Dim d As DateTime = h.ToDateTime(yyyy, mm, dd, 0, 0, 0, 0) Dim mi As DateTime = d.ToShortDateString() GH2SH = f.GetYear(mi) & "/" & f.GetMonth(mi) & "/" & f.GetDayOfMonth(mi) End Function
امید که به کار دیگران نیز آید.
برچسبهای مرتبط با این نوشته:
|