# NewYear **Repository Path**: juer2017/new-year ## Basic Information - **Project Name**: NewYear - **Description**: 除夕倒计时 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2024-11-03 - **Last Updated**: 2024-12-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 倒计时功能 build.gradle中引用lunar日历库 ``` implementation libs.lunar ``` libs.versions.toml中 ``` lunar = "1.3.14" lunar = { module = "cn.6tail:lunar", version.ref = "lunar" } ``` Lunar类型当前时间获取 ``` Lunar lunar = Lunar.fromDate(new Date()); ``` 时间戳类型当前时间获取 ``` long nowTime = TimeUtils.getTimeStame(); ``` TimeUtils时间工具类 ``` import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public class TimeUtils { public static String dateFormat_day = "HH:mm"; public static String dateFormat_month = "MM-dd"; /** * 时间转换成字符串,默认为"yyyy-MM-dd HH:mm:ss" * * @param time 时间 */ public static String dateToString(long time) { return dateToString(time, "yyyy-MM-dd HH:mm:ss"); } /** * 时间转换成字符串,指定格式 * * @param time 时间 * @param format 时间格式 */ public static String dateToString(long time, String format) { Date date = new Date(time); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); return simpleDateFormat.format(date); } public static Date parseServerTime(String serverTime, String format) { if (format == null || format.isEmpty()) { format = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINESE); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); Date date = null; try { date = sdf.parse(serverTime); } catch (Exception e) { } return date; } /** * 将时间转换为时间戳 */ public static String dateToStamp(String s) throws ParseException { String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = simpleDateFormat.parse(s); long ts = date.getTime(); res = String.valueOf(ts); return res; } /** * 将时间转换为时间戳 */ public static String dateToStamp2(String s) throws ParseException { String res; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(s); long ts = date.getTime(); res = String.valueOf(ts); return res; } /** * 获取当前的时间戳 * * @return */ public static long getTimeStame() { //获取当前的毫秒值 long time = System.currentTimeMillis(); //将毫秒值转换为String类型数据 long time_stamp = time; //返回出去 return time_stamp; } } ``` 节日时间戳获取 ``` //元旦节 Solar sYuandan = Solar.fromYmd(lunar.getYear(), 1, 1); //腊八节 Lunar lLaba = Lunar.fromYmd(lunar.getYear(), 12, 8); long yuandan = Long.parseLong(TimeUtils.dateToStamp(sYuandan + " 00:00:00")); long laba = Long.parseLong(TimeUtils.dateToStamp(lLaba.getSolar().toString() + " 00:00:00")); ``` 获取现在到节日的时间戳 ``` long nowTimeYMD = Long.parseLong(TimeUtils.dateToStamp2(TimeUtils.dateToString(TimeUtils.getTimeStame(), "yyyy-MM-dd"))); //现在到指定节日天数 (yuandan - nowTimeYMD) / (1000 * 60 * 60 * 24); //现在到指定节日小时 (yuandan - nowTimeYMD) / (1000 * 60 * 60)) % 24; //现在到指定节日分钟 (yuandan - nowTimeYMD) / (1000 * 60)) % 60; //现在到指定节日秒 (yuandan - nowTimeYMD) / 1000) % 60; ``` //每秒刷新一次,实现倒计时功能 ``` public static Handler handler = new Handler(Looper.getMainLooper()); //初始化 update();//显示数据 //开始计时 handler.postDelayed(runnable, 1000); //停止计时 //handler.removeCallbacks(runnable); //刷新 public Runnable runnable = new Runnable() { @RequiresApi(api = Build.VERSION_CODES.O) public void run() { update();//获取新数据 handler.postDelayed(this, 1000); //n秒刷新一次 } }; //更新数据 private void update() { } ``` 生肖获取 ``` Lunar.fromYmd(lunar.getYear(), 1, 1).getYearShengXiao()); ``` 干支获取 ``` Lunar.fromYmd(lunar.getYear(), 1, 1).getYearInGanZhi(); ``` 春节阳历及农历显示 ``` //下个春节时间 tvChunjie.setText("春节时间:" + Lunar.fromYmd(lunar.getYear() + 1, 1, 1).getSolar().toString()); //下个春节当天星期几 tvChunjieWeek.setText("星期" + Lunar.fromYmd(lunar.getYear() + 1, 1, 1).getSolar().getWeekInChinese()); //下个春节农历及生肖 tvChunjieNongli.setText(Lunar.fromYmd(lunar.getYear() + 1, 1, 1).getYearInGanZhi() + "(" + Lunar.fromYmd(lunar.getYear() + 1, 1, 1).getYearShengXiao() + ")" + "年"); ```