Jalali 表格日历

如果您有任何问题或建议,可以联系提供波斯日期(Jalali/Shamsi日期)及节假日的日历、日期选择器和日期转换器。

jalali_calendar 软件包的修改和完整版本

68747470733a2f2f692e6962622e636f2f516231546870372f53637265656e73686f742d32303231303432302d3231343033312e706e67

screenshots

用法

在 Flutter pubspec.yaml 中导入此行

jalali_table_calendar: ^1.0.2

要使用日历或日期选择器,请将此行导入到您的 dart 文件中

import 'package:jalali_table_calendar/jalali_table_calendar.dart';

要使用日期转换器,请将此行导入到您的 dart 文件中

import 'package:persian_date/persian_date.dart';

导入库后,要显示日历,您可以使用 jalaliCalendar 或 jalaliCalendarPicker() 方法,构造函数中的 `context` 是必需的。

此示例创建一个日历小部件

jalaliCalendar(
    context: context,
    // add the events for each day
    events: {
        DateTime(2021,4,15):['sample event',66546],
        DateTime(2021,4,14):[6,5,465,1,66546],
        DateTime(2021,4,18):[6,5,465,1,66546],
        DateTime(2021,4,19):[6,5,465,1,66546],
         },
    //make marker for every day that have some events
    marker: (date,events){
        return Positioned(
            top: -4,
            left: 0,
            child: Container(
            decoration: BoxDecoration(
            color: Theme.of(context).textSelectionColor,
            shape: BoxShape.circle),
            padding: const EdgeInsets.all(6.0),
              child: Text(events.length.toString()),
                ),
             );
            },
    onDaySelected: (date) {
        print(date);
         }),

此示例将选定的日期作为 Jalali(شمسی)返回

如果您想将选定的日期转换为公历,请在构造函数中将 convertToGregorian 设置为 true

Future _selectDate() async {
    String picked = await jalaliCalendarPicker(context: context); // نمایش خروجی به صورت شمسی
   //  await jalaliCalendarPicker(context: context,convertToGregorian: true); // نمایش خروجی به صورت میلادی
    if (picked != null) setState(() => _value =picked.toString());
    print(_value);
  }

此示例将选定的日期作为公历(میلadi)返回

Future _selectDate() async {
    String picked = await jalaliCalendarPicker(context: context,convertToGregorian: true); // نمایش خروجی به صورت میلادی
    if (picked != null) setState(() => _value =picked.toString());
    print(_value);
  }

这些参数用于显示时间选择器

参数 操作
showTimePicker 设置为 true 以显示时间选择器
hore24Format 设置为 true 以 24 小时格式返回时间
initialTime 使用 TimeOfDay 设置初始时间

要使用日期选择器,您可以遵循此示例

要显示日期选择器,需要这些参数

minYear // min date this required  for the start year in Jalali
maxYear // max  date this required  for the last year in jalali
confirm and cancel // widget for show text
_format // for returning date like String _format = 'yyyy-mm-dd';
onChanged // return date when the user changes the date
onConfirm //  return date when the user click confirm

要设置默认日期,请使用这些参数

initialYear => for year
initialMonth => for month
initialDay => for day

完整的日期选择器示例

    DatePicker.showDatePicker(
      context,
      minYear: 1300,
      maxYear: 1450,
      confirm: Text(
        'Confirm',
        style: TextStyle(color: Colors.red),
      ),
      cancel: Text(
        'Cancel',
        style: TextStyle(color: Colors.cyan),
      ),
      dateFormat: _format,
      onChanged: (year, month, day) {
        if (!showTitleActions) {
          _changeDatetime(year, month, day);
        }
      },
      onConfirm: (year, month, day) {
        _changeDatetime(year, month, day);
        _valuePiker = " Full date : $_datetime  \n year : $year \n  Month  :   $month \n  day :  $day";
      }
    )

 void _changeDatetime(int year, int month, int day) {
    setState(() {
      _datetime = '$year-$month-$day';
    });
  }

要使用日期转换器,您可以遵循此示例

首先将此库导入到您的代码中

import 'package:persian_date/persian_date.dart';

完整的日期转换器示例

PersianDate pDate = PersianDate(gregorian: "1989-01-29");
    print("Now ${pDate.getDate}");

    PersianDate persianDate = PersianDate();
    print("Now ${persianDate.now}");
    print(persianDate.hour);
    print("year ${persianDate.year}");
    print("isHoliday ${persianDate.isHoliday}");
    print("isHoliday ${persianDate.weekdayname}");
    print(persianDate.monthname); // نام ماه
      print(persianDate.month); // ماه
      print(persianDate.day); // روز
      print(persianDate.hour);// ساعت
      print(persianDate.minute);// دقیقه
      print(persianDate.second);// ثانیه
      print(persianDate.millisecond); // میلی ثانیه
      print(persianDate.microsecond);//


print("Parse Gregorian To Jalali ${persianDate.gregorianToJalali("2019-02-20T00:19:54.000Z","yyyy-m-d hh:nn")}");
print("Parse Jalali To Gregorian ${persianDate.jalaliToGregorian("1368-05-30 19:54", "yyyy-m-d hh:nn")}");

日期转换器支持以下格式

   `"2012-02-27 13:27:00"`
    `"2012-02-27 13:27:00.123456z"`
    `"2012-02-27 13:27:00,123456z"`
    `"20120227 13:27:00"`
    `"20120227T132700"`
    `"20120227"`
    `"+20120227"`
    `"2012-02-27T14Z"`
    `"2012-02-27T14+00:00"`
    `"-123450101 00:00:00 Z"`: in the year -12345.
    `"2002-02-27T14:00:00-0500"`: Same as `"2002-02-27T19:00:00Z"`
格式 操作 格式 操作
yyyy 返回四位数的年份 hh 两位数的小时
yy 返回两位数的年份 h 一位数的小时
mm 返回两位数的月份 HH 24小时制两位数的小时
m 返回一位数的月份 H 24小时制一位数的小时
MM 月份的全称 nn 两位数的分钟
M 月份的简称 n 一位数的分钟
dd 两位数的日期 ss 两位数的秒
d 一位数的日期 s 一位数的秒
w 周数 SS 显示毫秒
DD 日期的全称 S 显示毫秒
D 日期的简称 uuu 显示微秒
am 显示简短的时间 u 显示微秒
AM 显示完整时间 . .

错误报告和建议

如果您有任何问题或建议,可以联系 [email protected][email protected],即 `jalali_calendar` 软件包的作者。

GitHub

https://github.com/Azare77/jalali_table_calendar