| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import 'package:intl/intl.dart';
- class AgeZodiacSignUtil {
- AgeZodiacSignUtil._();
- /// 计算星座(传入 DateTime)
- static String getZodiacSign(DateTime date) {
- int month = date.month;
- int day = date.day;
- if ((month == 3 && day >= 21) || (month == 4 && day <= 19)) {
- return '白羊座';
- } else if ((month == 4 && day >= 20) || (month == 5 && day <= 20)) {
- return '金牛座';
- } else if ((month == 5 && day >= 21) || (month == 6 && day <= 20)) {
- return '双子座';
- } else if ((month == 6 && day >= 21) || (month == 7 && day <= 22)) {
- return '巨蟹座';
- } else if ((month == 7 && day >= 23) || (month == 8 && day <= 22)) {
- return '狮子座';
- } else if ((month == 8 && day >= 23) || (month == 9 && day <= 22)) {
- return '处女座';
- } else if ((month == 9 && day >= 23) || (month == 10 && day <= 22)) {
- return '天秤座';
- } else if ((month == 10 && day >= 23) || (month == 11 && day <= 21)) {
- return '天蝎座';
- } else if ((month == 11 && day >= 22) || (month == 12 && day <= 21)) {
- return '射手座';
- } else if ((month == 12 && day >= 22) || (month == 1 && day <= 19)) {
- return '摩羯座';
- } else if ((month == 1 && day >= 20) || (month == 2 && day <= 18)) {
- return '水瓶座';
- } else if ((month == 2 && day >= 19) || (month == 3 && day <= 20)) {
- return '双鱼座';
- } else {
- return '未知星座';
- }
- }
- /// 计算年龄(传入 DateTime)
- static int calculateAge(DateTime birthDate) {
- DateTime currentDate = DateTime.now();
- int age = currentDate.year - birthDate.year;
- if (currentDate.month < birthDate.month ||
- (currentDate.month == birthDate.month && currentDate.day < birthDate.day)) {
- age--;
- }
- return age;
- }
- /// 从字符串计算星座
- static String getZodiacSignFromString(String dateStr, {String format = 'yyyy-MM-dd'}) {
- try {
- DateTime date = DateFormat(format).parse(dateStr);
- return getZodiacSign(date);
- } catch (e) {
- return '无效日期';
- }
- }
- /// 从字符串计算年龄
- static int? calculateAgeFromString(String dateStr, {String format = 'yyyy-MM-dd'}) {
- try {
- DateTime date = DateFormat(format).parse(dateStr);
- return calculateAge(date);
- } catch (e) {
- return null;
- }
- }
- }
|