Giter VIP home page Giter VIP logo

fatulm / shamsi_date Goto Github PK

View Code? Open in Web Editor NEW
77.0 77.0 9.0 351 KB

A Flutter and Dart package for using Jalali (Shamsi, Solar, Persian or Jalaali) calendar. You can convert, format and manipulate Jalali and Gregorian (Miladi) date and times.

Home Page: https://pub.dev/packages/shamsi_date

License: BSD 3-Clause "New" or "Revised" License

Dart 100.00%
calendar dart date datetime flutter gregorian jalaali jalali julian persian shamsi solar time

shamsi_date's People

Contributors

fatulm avatar mehrdad-shokri avatar pourqavam 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

Watchers

 avatar

shamsi_date's Issues

The problem of 2124/03/20

Problem:
The Gregorian date 2124/03/20 must be 1503/01/01 in the Jalali calendar but this lib returns 1502/12/30.

Checks:
The Gregorian date 2025/03/20 must be 1403/12/30 in the Jalali calendar which currently is correct but must be rechecked after fixing the reported problem.

@roozbehp typed in the leap year data from the Iranian calendar authority and put it at: https://github.com/roozbehp/persiancalendar/blob/main/kabise.txt

It would be great if automatic tests could be added based on that data to this project.

Make dates comparable

It would be nice to be able to compare Jalali dates without converting them to DateTime objects or comparing their fields.

Diff 2 dates

Suppose I have 2 Jalali instances, how do I diff them in months? I suppose converting them back to DateTime and using difference method won't work, because there's no correlation between Jalali and Gregorian month diffs.

How to access time data?

I want to show time next to date, e.g.: 1399/06/15 23:55

How can I do it with this library?

I using MillisecondsEpoch.

Month checking Issue

There was an error in Jalali formatter file which was an if statement checking if received month is treater than ml or not(ml being month length). months are 31 or 30 but it just accepted lower than this number meaning greatest month length was 30 so I got an error and check you code and found it out. I committed my change so it would be great if you accepted it ASAP because Im using it inside my project. Thanks in advance :)

Jalali day is out of valid range.

Hi, I am trying to get session by this command:
Jalali.now().copy(month: 12).formatter.mN

But I got This error :

 Jalali.now().copy(month: 12).formatter.mN
Unhandled exception:
DateException: Jalali day is out of valid range.
#0      new Jalali (package:shamsi_date/src/jalali/jalali_date.dart:129:9)
#1      Jalali.copy (package:shamsi_date/src/jalali/jalali_date.dart:222:14)
#2      MonthPickerModel.Eval ()
#3  

I expect that I get اسفند .

I am using shamsi_date: ^0.9.1 version and this is my doctor:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.0.5, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Chrome - develop for the web
[!] Android Studio (not installed)
[✓] VS Code (version 1.56.2)
[✓] Connected device (2 available)

! Doctor found issues in 1 category.

month range error

there is a problem on
(dateProvider as Jalali).withDay(30).addMonths(-1)
when month is 1 and day is 30 or 31.

Jalali day is out of valid range

Hi
I have the same problem here
The point is this is ONLY happening today at 1400/05/31 (8/2/2021) and was working fine the other days

code where this is happening

Jalali date;
var initDate = '1400/05/31';
var splitDate = initDate.split("/");
var date1 = Jalali(int.parse(splitDate[0]), int.parse(splitDate[1]), int.parse(splitDate[2]));
date = date1.addMonths(3);      -------------> The line that exception happens

the Exception:

E/flutter (29797): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: DateException: Jalali day is out of valid range.
E/flutter (29797): #0      new Jalali (package:persian_datetime_picker/src/date/src/jalali/jalali_date.dart:160:9)
E/flutter (29797): #1      Jalali.addMonths (package:persian_datetime_picker/src/date/src/jalali/jalali_date.dart:480:14)
E/flutter (29797): #2      UtilFunctions.addMonth (package:kenaretam/util/util_functions.dart:218:13)
E/flutter (29797): #3      _SubmitPropertyPageState._submitProperty (package:kenaretam/route/property/submit_property.dart:1514:25)
E/flutter (29797): #4      _SubmitPropertyPageState._bottomNavigationBar.<anonymous closure> (package:kenaretam/route/property/submit_property.dart:406:21)
E/flutter (29797): #5      _SubmitPropertyPageState._bottomNavigationBar.<anonymous closure> (package:kenaretam/route/property/submit_property.dart:404:30)
E/flutter (29797): #6      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:991:20)
E/flutter (29797): #7      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (29797): #8      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:607:11)
E/flutter (29797): #9      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
E/flutter (29797): #10     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230:7)
E/flutter (29797): #11     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:475:9)
E/flutter (29797): #12     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:93:12)
E/flutter (29797): #13     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:138:9)
E/flutter (29797): #14     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:397:8)
E/flutter (29797): #15     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:136:18)
E/flutter (29797): #16     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:122:7)
E/flutter (29797): #17     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:381:19)
E/flutter (29797): #18     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:361:22)
E/flutter (29797): #19     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:278:11)
E/flutter (29797): #20     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:316:7)
E/flutter (29797): #21     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:280:5)
E/flutter (29797): #22     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:238:7)
E/flutter (29797): #23     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:221:7)
E/flutter (29797): #24     _rootRunUnary (dart:async/zone.dart:1370:13)
E/flutter (29797): #25     _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter (29797): #26     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1170:7)
E/flutter (29797): #27     _invoke1 (dart:ui/hooks.dart:180:10)
E/flutter (29797): #28     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:276:7)
E/flutter (29797): #29     _dispatchPointerDataPacket (dart:ui/hooks.dart:96:31)
E/flutter (29797): 

Even by changing the date (e.g. 1400/05/31 -> 1400/05/20 Or even 1400/04/20), the Exception still occurs

The method distanceTo isn't defined for type Jalali

I have this jalali instance :

    jStartDate = jStartDate.withDay(1);
    jEndDate = jEndDate.withDay(1);

I want to find out how many days are between jStartDate and jEndDate ?
So in order to find out days I am using :
int distance = jStartDate.distanceTo(jEndDate);

But I got: 'The method distanceTo isn't defined for type 'Jalali`

addMonth() make invalid date in some cases

addMonth() method just go to the next month on same day but in some cases there are no such a date, like next month of 31/6 which is 31/7 or previous month of 31/1 which is 31/12

copy(), withDay(), ... not exist

hello
I want to use copy(...) method or withYear, withMonth and withDay methods on an existing object but these methods don't exist in Jalaali objects.

Jalali day is out of range

Hello and thanks for the great work... there is a problem with the package... there are months in the gregorian calendar that are 29 days and those months are 30 days or 31 in Shamsi calendar... in this kind of months, the calendar would not work because ml => month length would be less than days of months.

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.