Flutter伊斯兰日历插件hijri的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter伊斯兰日历插件hijri的使用

描述

Hijri是一个用于转换和操作伊斯兰(希吉拉)日历的Flutter插件。它提供了多种方法来处理日期转换、格式化、比较等操作。

使用示例

基本用法

import 'package:hijri/hijri_calendar.dart';

void main() {
  // 获取当前时间对应的伊斯兰日历日期
  var _today = HijriCalendar.now();
  print(_today.hYear); // 输出伊斯兰年份
  print(_today.hMonth); // 输出伊斯兰月份
  print(_today.hDay); // 输出伊斯兰日期
  print(_today.getDayName()); // 输出星期几
  
  // 获取当月天数
  print(_today.lengthOfMonth); // 例如:30 天
  
  // 格式化输出
  print(_today.toFormat("MMMM dd yyyy")); // 例如:Ramadan 14 1439
}

更改语言环境

// 设置语言环境,如阿拉伯语
HijriCalendar.setLocal('ar');

格里高利历转为乌玛勒库拉历(Ummalqura)

var hDate = HijriCalendar.fromDate(DateTime(2018, 11, 12));
print(hDate.toString()); // 例如:04/03/1440H
print(hDate.getShortMonthName()); // 例如:Rab1
print(hDate.getLongMonthName()); // 例如:Rabi' al-awwal
print(hDate.lengthOfMonth); // 例如:29 days

检查日期是否有效

var _checkDate = HijriCalendar()
  ..hYear = 1439
  ..hMonth = 11
  ..hDay = 30;
print(_checkDate.isValid()); // false -> 该月只有29天

乌玛勒库拉历转为格里高利历

var gDate = HijriCalendar();
print(gDate.hijriToGregorian(1415, 7, 27)); // 例如:1994-12-29 00:00:00.000

格式化日期

var _format = HijriCalendar.now();
print(_format.fullDate()); // 例如:Thulatha, Ramadan 14, 1439 h
print(_format.toFormat("mm dd yy")); // 例如:09 14 39

比较日期

print(_today.isAfter(1440, 11, 12)); // false
print(_today.isBefore(1440, 11, 12)); // true
print(_today.isAtSameMomentAs(1440, 11, 12)); // false

调整日期

var defCal = HijriCalendar.fromDate(DateTime(2020, 8, 20));
print("default ${defCal.fullDate()}");

var adjCal = HijriCalendar();
var adj = <int, int>{};
adj[17292] = 59083; // 将29天改为30天
adjCal.setAdjustments(adj);
adjCal.gregorianToHijri(2020, 8, 20);
print("adjusted ${adjCal.fullDate()}");

完整示例代码

import 'package:hijri/hijri_calendar.dart';

void main() {
  String locale = 'ar';
  
  // 获取当前时间对应的伊斯兰日历日期
  HijriCalendar _today = HijriCalendar.now();
  HijriCalendar.setLocal(locale);
  print(_today.hYear); // 输出伊斯兰年份
  print(_today.hMonth); // 输出伊斯兰月份
  print(_today.hDay); // 输出伊斯兰日期
  print(_today.getDayName());
  print(_today.lengthOfMonth); // 获取当月天数
  print(_today.toFormat("MMMM dd yyyy")); // 格式化输出
  
  // 格里高利历转为乌玛勒库拉历(Ummalqura)
  var hDate = HijriCalendar.fromDate(DateTime(2018, 11, 12));
  print(hDate.fullDate()); 
  print(hDate.getShortMonthName()); 
  print(hDate.getLongMonthName()); 
  print(hDate.lengthOfMonth); 
  
  // 检查日期是否有效
  var _checkDate = HijriCalendar()
    ..hYear = 1430
    ..hMonth = 09
    ..hDay = 8;
  print(_checkDate.isValid()); 
  print(_checkDate.fullDate()); 
  
  // 乌玛勒库拉历转为格里高利历
  var gDate = HijriCalendar();
  print(gDate.hijriToGregorian(1440, 4, 19).toString()); 
  
  // 格式化日期
  var _format = HijriCalendar.now();
  print(_format.fullDate()); 
  print(_format.toFormat("mm dd yy")); 
  print(_format.toFormat("-- DD, MM dd --")); 
  
  // 比较日期
  print(_today.isAfter(1440, 11, 12)); 
  print(_today.isBefore(1440, 11, 12)); 
  print(_today.isAtSameMomentAs(1440, 11, 12)); 

  // 调整日期
  var defCal = HijriCalendar.fromDate(DateTime(2020, 8, 20));
  print("default ${defCal.fullDate()}");
  var adjCal = HijriCalendar();
  var adj = <int, int>{};
  adj[17292] = 59083; // 将29天改为30天
  adjCal.setAdjustments(adj);
  adjCal.gregorianToHijri(2020, 8, 20);
  print("adjusted ${adjCal.fullDate()}");
}

通过上述代码和说明,您可以更轻松地在Flutter项目中集成并使用hijri插件来处理伊斯兰日历相关的功能。希望这对您有所帮助!


更多关于Flutter伊斯兰日历插件hijri的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter伊斯兰日历插件hijri的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用hijri插件来显示伊斯兰日历的示例代码。hijri插件可以帮助你将公历日期转换为伊斯兰(希吉拉)日期,并显示伊斯兰日历。

首先,确保在你的pubspec.yaml文件中添加hijri依赖项:

dependencies:
  flutter:
    sdk: flutter
  hijri: ^0.3.0  # 请确保使用最新版本

然后运行flutter pub get来安装依赖项。

接下来,在你的Flutter项目中,你可以使用以下代码来展示伊斯兰日历:

import 'package:flutter/material.dart';
import 'package:hijri/hijri.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Hijri Calendar Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HijriCalendarScreen(),
    );
  }
}

class HijriCalendarScreen extends StatefulWidget {
  @override
  _HijriCalendarScreenState createState() => _HijriCalendarScreenState();
}

class _HijriCalendarScreenState extends State<HijriCalendarScreen> {
  DateTime selectedDate = DateTime.now();

  @override
  Widget build(BuildContext context) {
    HijriDate hijriDate = HijriDate.fromGregorian(selectedDate);

    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Hijri Calendar'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Gregorian Date: ${selectedDate.toLocal()}'),
            SizedBox(height: 16.0),
            Text('Hijri Date: ${hijriDate.year}-${hijriDate.month}-${hijriDate.day}'),
            SizedBox(height: 16.0),
            ElevatedButton(
              onPressed: () {
                // 示例:将日期增加一天
                setState(() {
                  selectedDate = selectedDate.add(Duration(days: 1));
                });
              },
              child: Text('Next Day'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,该应用显示当前公历日期和对应的伊斯兰日期。你可以通过点击“Next Day”按钮来增加一天,并看到日期变化。

  1. HijriDate.fromGregorian(selectedDate):将公历日期转换为伊斯兰日期。
  2. hijriDate.yearhijriDate.monthhijriDate.day:分别获取伊斯兰日期的年、月和日。

这个示例展示了基本的日期转换和显示功能。你可以根据需要进行扩展,比如添加日期选择器来选择特定日期,或者格式化日期显示等。

回到顶部