Flutter农历日期插件vnlunar的使用

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

Flutter农历日期插件vnlunar的使用

描述

vnlunar 包提供了在阳历和阴历之间转换的功能,重点是越南阴历系统。由于阴历依赖于时区、经度和纬度,因此建议仅用于越南阴历。

所有函数都是从JavaScript转换为Dart的。原作者是来自PhD. Ho Ngoc Duc。感谢他启发我用Dart创建这个包。

功能特性

  • 支持将阳历日期转换为阴历日期,反之亦然(支持1800年至2199年)。
  • 支持将阳历日期转换为儒略日。

使用方法

类的使用

从版本1.1.0开始,该包支持类而不是列表,以更方便地访问。LunarSolar 提供了相互交互或转换为 DateTime 对象的方法。

import 'package:vnlunar/vnlunar.dart';

void main() {
  // 创建一个 Lunar 对象,基于给定的阳历日期
  final lunar = Lunar(createdFromSolar: true, date: DateTime(1998, 6, 18));
  
  // 创建一个 Solar 对象,基于给定的阳历日期
  final solar = Solar(DateTime(1998, 6, 18));
  
  // 将 Lunar 转换为 Solar
  final convertedSolarFromLunar = lunar.getSolar();
  
  // 验证转换是否正确
  print(solar == convertedSolarFromLunar); // 输出:true
}

函数的使用

convertSolar2Lunar

此函数返回一个列表,顺序为 [lunarDay, lunarMonth, lunarYear, leap],其中 leap 表示该月是否为闰月。

int dd = 23;
int mm = 3;
int yy = 2023;
int timeZone = 7; 

List<int> lunar = convertSolar2Lunar(dd, mm, yy, timeZone); // lunar = [2, 2, 2023, 1] - leap
print(lunar); // 输出:[2, 2, 2023, 1]

convertLunar2Solar

此函数返回一个列表,顺序为 [solarDay, solarMonth, solarYear]。注意它需要 leap 参数,其中 leap = 1 表示该月为闰月,leap = 0 表示不是闰月。

int dd = 2;
int mm = 2;
int yy = 2023;
int leap = 1;
int timeZone = 7;

List<int> solar = convertLunar2Solar(dd, mm, yy, leap, timeZone); // solar = [23, 3, 2023]
print(solar); // 输出:[23, 3, 2023]

示例代码

以下是一个完整的示例代码,展示了如何使用 vnlunar 包进行阳历和阴历之间的转换:

import 'package:vnlunar/vnlunar.dart';

void main() {
  // 示例1:使用 Lunar 和 Solar 类进行转换
  final lunar = Lunar(createdFromSolar: true, date: DateTime(1998, 6, 18));
  final solar = Solar(DateTime(1998, 6, 18));
  final convertedSolarFromLunar = lunar.getSolar();
  
  print('Original Solar Date: $solar');
  print('Converted Solar Date from Lunar: $convertedSolarFromLunar');
  print('Are they equal? ${solar == convertedSolarFromLunar}'); // 输出:true
  
  // 示例2:使用 convertSolar2Lunar 函数
  int dd = 23;
  int mm = 3;
  int yy = 2023;
  int timeZone = 7; 

  List<int> lunarDate = convertSolar2Lunar(dd, mm, yy, timeZone);
  print('Lunar Date: ${lunarDate.join(', ')}'); // 输出:2, 2, 2023, 1
  
  // 示例3:使用 convertLunar2Solar 函数
  int lunarDay = 2;
  int lunarMonth = 2;
  int lunarYear = 2023;
  int leap = 1;

  List<int> solarDate = convertLunar2Solar(lunarDay, lunarMonth, lunarYear, leap, timeZone);
  print('Converted Solar Date from Lunar: ${solarDate.join(', ')}'); // 输出:23, 3, 2023
}

额外信息

推荐阅读PhD. Ho Ngoc Duc的原始研究,以了解更多关于计算的细节。

希望这些信息能帮助你更好地理解和使用 vnlunar 插件!如果有任何问题或需要进一步的帮助,请随时提问。


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

1 回复

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


当然,以下是如何在Flutter项目中使用vnlunar插件来获取和显示农历日期的示例代码。vnlunar是一个用于处理农历(阴历)日期的Flutter插件。

1. 添加依赖

首先,在你的pubspec.yaml文件中添加vnlunar的依赖:

dependencies:
  flutter:
    sdk: flutter
  vnlunar: ^latest_version  # 请替换为最新版本号

然后运行flutter pub get来获取依赖。

2. 导入插件

在你的Dart文件中导入vnlunar插件:

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

3. 使用插件

下面是一个简单的示例,展示如何使用vnlunar插件来获取并显示当前日期的农历信息:

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

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

class LunarDateScreen extends StatefulWidget {
  @override
  _LunarDateScreenState createState() => _LunarDateScreenState();
}

class _LunarDateScreenState extends State<LunarDateScreen> {
  String lunarDateInfo = '';

  @override
  void initState() {
    super.initState();
    _getLunarDateInfo();
  }

  void _getLunarDateInfo() async {
    // 获取当前公历日期
    DateTime now = DateTime.now();
    
    // 初始化VNLunarDate对象
    VNLunarDate lunarDate = VNLunarDate.fromSolar(
      now.year, 
      now.month, 
      now.day
    );

    // 获取农历日期信息
    String lunarYear = lunarDate.lunarYear.toString();
    String lunarMonth = lunarDate.lunarMonth.toString().padStart(2, '0');
    String lunarDay = lunarDate.lunarDay.toString().padStart(2, '0');
    String lunarFestival = lunarDate.getFestival();

    // 格式化输出
    String info = "公历: ${now.year}-${now.month.toString().padStart(2, '0')}-${now.day.toString().padStart(2, '0')}\n"
                  "农历: $lunarYear-$lunarMonth-$lunarDay\n"
                  "节日: $lunarFestival";

    // 更新状态
    setState(() {
      lunarDateInfo = info;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('农历日期示例'),
      ),
      body: Center(
        child: Text(lunarDateInfo, style: TextStyle(fontSize: 18)),
      ),
    );
  }
}

4. 运行应用

确保你的开发环境已经配置好,然后运行flutter run来启动应用。你将看到一个屏幕,上面显示了当前日期的公历和农历信息,以及可能的节日。

这个示例展示了如何使用vnlunar插件来获取当前日期的农历信息,并将其显示在屏幕上。你可以根据需要进一步扩展这个示例,比如添加用户输入功能来选择特定日期,或者根据农历日期来计划活动等。

回到顶部