Git Product home page Git Product logo

md.persiandatetime's Introduction

MD.PersianDateTime

A C# library to use PersianCalendar as easy as DateTime تقویم شمسی و هجری قمری در C#

Installing:

.Net Framework 2+

Install-Package MD.PersianDateTime

.Net Standard 2+ (.Net Core)

Install-Package MD.PersianDateTime.Standard

Coding:

Creating new object:

  1. New with DateTime object
var persianDateTime = new PersianDateTime(DateTime.Now);
  1. New with persian date
var persianDateTime = new PersianDateTime(1394, 5, 9);
var persianDateTime = new PersianDateTime(1394, 5, 9, 10, 5, 3);
var persianDateTime = new PersianDateTime(1394, 5, 9, 10, 5, 3, 103);
  1. Parse
var persianDateTime1 = PersianDateTime.Parse("دوشنبه 05 مرداد 1395 ساعت 04:03");
var persianDateTime2 = PersianDateTime.Parse(13901229); // تاریخ
var persianDateTime2 = PersianDateTime.Parse(13901229231232102); // تاریخ به همراه زمان تا دقت میلی ثانیه
var persianDateTime3 = PersianDateTime.Parse("چهارشنبه، ۱۰ دی ۱۳۹۳ ۱۲:۳۸");
var persianDateTime4 = PersianDateTime.Parse("24 آذر 1393");
var persianDateTime5 = PersianDateTime.Parse("د 24 آذر 1393 4:2:5:5 ب.ظ");
var persianDateTime6 = PersianDateTime.Parse("1393/02/01");
var persianDateTime7 = PersianDateTime.Parse("1393/02/01 02:03");
var persianDateTime8 = PersianDateTime.Parse("1393-02-01 02:03:10:30");
var persianDateTime9 = PersianDateTime.Parse("93-1-1 3:15 ب.ظ");
var persianDateTime10 = PersianDateTime.Parse("جمعه 93/2/1 ساعت 3:2 ب.ظ");
  1. Today, Now
var persianDateTime1 = PersianDateTime.Now;
var persianDateTime2 = PersianDateTime.Today; // without time

Enable persian numbers

var persianDateTime = PersianDateTime.Parse("چهارشنبه 5 آذر 58");
persianDateTime.PersianNumber = true;
Console.Write(PersianDateTime.Now.ToString("yyyy/MM/dd"));
// ۱۳۹۹/۱۰/۰۳

Convert to DateTime

PersianDateTime object can convert automatically to datetime without any redundant code

DateTime dateTime = PersianDateTime.Now

Also you can use ToDateTime method

DateTime datetime = persianDateTime.ToDateTime();

Get HijriDate

var persianDateTimeNow = PersianDateTime.Now;
var hijriDateTime = persianDateTimeNow.ToHijri(-1);
Console.WriteLine($"{hijriDateTime.Year}-{hijriDateTime.Month}-{hijriDateTime.Day}");

Formats

you can use the following formats in ToString method.

yyyy: سال چهار رقمی
yy: سال دو رقمی
MMMM: نام فارسی ماه
MM: عدد دو رقمی ماه
M: عدد یک رقمی ماه
dddd: نام فارسی روز هفته
dd: عدد دو رقمی روز ماه
d: عدد یک رقمی روز ماه
HH: ساعت دو رقمی با فرمت 00 تا 24
H: ساعت یک رقمی با فرمت 0 تا 24
hh: ساعت دو رقمی با فرمت 00 تا 12
h: ساعت یک رقمی با فرمت 0 تا 12
mm: عدد دو رقمی دقیقه
m: عدد یک رقمی دقیقه
ss: ثانیه دو رقمی
s: ثانیه یک رقمی
fff: میلی ثانیه 3 رقمی
ff: میلی ثانیه 2 رقمی
f: میلی ثانیه یک رقمی
tt: ب.ظ یا ق.ظ
t: حرف اول از ب.ظ یا ق.ظ

Some useful methods

IsSqlDateTime \\ Check datetime and return a boolean if it is valid for SQL
IsChristianDate \\ Check if the input string is a christian datetime
ElapsedTime \\ Get past time until now e.g: ۱ روز قبل
Add*** \\ add day, month, year, ... to persian datetime
Subtract*** \\ Subtract a datetime from current object
GetDifferenceQuarter \\ Date Difference base on seasons

Comparing

You can compare two PersianDateTime object together with C# operators

var persianDateTime1 = new PersianDateTime(1396, 03, 28);
var persianDateTime2 = new PersianDateTime(1396, 03, 29);
var persianDateTime3 = new PersianDateTime(1396, 03, 28);

persianDateTime1 > persianDateTime2; // false
persianDateTime1 < persianDateTime2; // true
persianDateTime1 == persianDateTime3; // true
persianDateTime1 != persianDateTime3; // false

Add and Subtract with operator

You can use + - operators

var persianDateTime1 = new PersianDateTime(1396, 03, 28);

persianDateTime1 = persianDateTime1 + new TimeSpan(0, 0, 12); // add 12 minutes
persianDateTime1 = persianDateTime1 - new TimeSpan(0, 0, 1); // subtract 1 minutes
persianDateTime1 = persianDateTime1.AddDays(1); // add one day
persianDateTime1 = persianDateTime1.AddMonth(-1); // subtract 1 month
.
.
.

md.persiandatetime's People

Contributors

mds92 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

md.persiandatetime's Issues

روز های ماه جاری

با سلام
میخواستم بدونم این کامپوننت روز های ماه رو هم بر میگردونه؟
ممنون

PublicKeyToken=null' does not have a strong name !!

Severity Code Description Project File Line Suppression State Warning CS8002 Referenced assembly 'MD.PersianDateTime, Version=4.2.0.0, Culture=neutral, PublicKeyToken=null' does not have a strong name.

Dear Mohammad, hi
recently I'm getting this warning when I want to Build the application

please help if you have a solution

پر نشدن فیلد

سلام روزتون بخیر
من توی asp net core
استفاده کردم
اما یک مشکلی هست

وقتی سمت ویو مقدار تاریخ ارسال میشه به سرور
مقدار 1/1/1
دریافت میشه به مدلی که از جنس کلاس شما ساختم و تاریخ درست دریافت نمیکنه

سوال درمورد استفاده تاریخ

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

.NET Standard 2.1

Hello, Can we use this package on .NET Standard 2.1 ?
because in dependencies, version of .NET Standard is 2.0.

مقدار تولیدی long با مقداری که Parse میشه هماهنگ نیست

مقدار تولیدی long با مقداری که Parse میشه هماهنگ نیست. مقدار تولیدی یک رقم بیشتر داره.
var dt = PersianDateTime.Now; // ۱۳۹۶/۱۲/۲۳ ۱۸:۰۲:۵۱ long dtLong = dt.ToLongDateTimeInt();

Console.WriteLine(dtLong); // 13961223180251561

Console.WriteLine(PersianDateTime.Parse(dtLong).ToDateTime());
ExceptionMessage: Numeric persian date time must have a format like 1396122310223246.

StackTrace: at MD.PersianDateTime.Core.PersianDateTime.Parse(Int64 numericPersianDateTime) at mdPersianTest.Program.Main(String[] args) in C:\Users\Hamid\Documents\Visual Studio 2017\Projects\InMemoryIdentityServer\mdPersianTest\Program.cs:line 14

تاریخ امروز یعنی 12 بهمن رو 11 بهمن نمایش می دهد

با سلام
و عرض خسته نباشید خدمت شما بزرگوار عزیز
کتابخانه ی شما امروز یعنی
12 بهمن 1398
رو 11 بهمن 1398
نمایش می دهد
این کدی که استفاده شده :
var Persiand = new PersianDateTime(DateTime.Now.Date); barStaticItem4.Caption = Persiand.Date.ToString("dddd MM MMMM yyyy");
خروجی رو هم ببینید خدمت شما
نمایش خروجی تاریخ اشتباه
تا چند روز پیش همه چیز درست کار می کرد اما امروز متاسفانه به مشکل خوردیم
ممنون میشم راهنمایی کنید

تبدیل تاریخ شمسی به میلادی و بالعکس

با سلام . آیا با استفاده از این کتابخونه امکان تبدیل تاریخ شمسی ( از نوع رشته ) به میلادی یا تبدیل تاریخ شمسی (از نوع رشته) به میلادی (از نوع DateTime ) وجود داره ؟
با تشکر

تبدیل تاریخ میلادی به شمسی و برعکس

سلام دوست عزيز
بابت اين كار خيلي زحمت كشيديد و كلي متدهاي سودمند و كاربردي توي اون وجود داره .
ولي انصافا فايل راهنماي شما واقعا استفاده كننده رو سردرگم ميكنه.
واسه "تبدیل تاریخ میلادی به شمسی و برعکس " بايد با كلي سعي و خطا پيش رفت كه بشه پبداش كرد آخرش هم پيدا نميشه.
لطفا يه فايل راهنماي ساده بذاريد يكي بتونه راحت ازش استفاده كنه.
من موندم كه براي "تبدیل تاریخ میلادی به شمسی و برعکس" چكار كنم !!!!!!!!؟؟
ممنونم

Net Standard

لطفا اگر ممکنه یک نسخه با 2.0 NetStandard روی Nuget قرار بدین.

Add support for DateTimeOffset

It is suggested to use DateTimeOffset instead of DateTime, and many components now are compatible with it.
Hope to see this in your great library ;)

Check Compatibility

Hi Mohammad.
I'm working on a project which is using net5.0 and MD.PersianDateTime.Standard 1.1.0.
I want to upgrade it to targetFramework net5.0 and MD.PersianDateTime.Standard 2.5.0.
Are they compatible? Should I check anything more?

پیشنهاد توسعه

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

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


وب سرویس تقویم فارسی

اطلاعات خوبی ارائه میده مثل وقایع و مناسبت های هر روز و دریافت رویداد در حالت شمسی و قمری و میلادی

کپی کردن تاریخ

سلام .
توی ورژن های قبلی با کپی کردن تاریخ در ورودی میشد تاریخ میلادی رو گرفت ولی توی ورژن با بوت استرپ 5 دیگه این قابلیت وجود نداره . آیا راه کاری وجود داره ؟

Suggestion: adding IFormattable interface

hi
can IFormattable interface be added to PersianDateTime struct as it already includes ToString(string) method?
it can be useful when using DisplayFormat attribute on PersianDateTime property in mvc

تبدیل تاریخ به میلادی و برعکس Need Help

سلام
من میخواستم تاریخ رو از تکس باکس بخونه و به میلادی تبدیل کنم و در دیتابیس ذخیره کنم و بعد هم دوباره بتونم تاریخ میلادی رو از دیتابیس بخونم و به تکست باکس انتقال بدم
از کد
var persianDateTime6 = PersianDateTime.Parse("1393/02/01");
باید تاریخ رو بخونم ولی توی توضیحات در مورد تبدیل چیزی پیدا نکردم، میشه راهنمایی کنید؟
ممنون

Finding the corresponding datetime ...

Thanks a lot for the great tool you created !
it works awesome,
but now I also need to convert some Dates back to Gregorian calendar ... is it also possible ?

ToLongDateTimeInt

اگر ممکن هست متودی برای تبدیل تاریخ و زمان به مقدار long قرار بدین برای ذخیره در دیتابیس احتیاج دارم.

PersianDateTime.Now.ToLongDateTimeString(); // چهارشنبه، ۲۳ اسفند ۱۳۹۶ ساعت ۱۰:۳۲:۴۶

long dt = PersianDateTime.Now.ToLongDateTimeInt(); // 13961223103246
PersinaDateTime.Parse(dt).ToLongDateTimeString(); // چهارشنبه، ۲۳ اسفند ۱۳۹۶ ساعت ۱۰:۳۲:۴۶

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.