时间加减快速get

背景:

    有一天小白凑到同事的电脑桌前,尼玛就看到了【select system-6/24/60 from dual】,才疏学浅的小白羞愧了,看不懂哇,来来来,迅速get!


----------------------------------------------------------------------------------------------------------------------

加法 

 select sysdate,add_months(sysdate,12) from dual;        --加1年

 select sysdate,add_months(sysdate,1) from dual;        --加1月

 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;   --加1星期

 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual;   --加1天

 select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1小时

 select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1分钟

 select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --加1秒

减法

 select sysdate,add_months(sysdate,-12) from dual;        --减1年

 select sysdate,add_months(sysdate,-1) from dual;        --减1月

 select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual;   --减1星期

 select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual;   --减1天

 select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual;  --减1小时

 select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --减1分钟

 select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual;  --减1秒


转载自:https://blog.youkuaiyun.com/z69183787/article/details/22409771

### LVGL 长按按钮快速增减数值的实现 在 LVGL 框架中,可以通过事件处理机制来实现长按按钮并快速增减数值的功能。以下是基于 LVGL 的具体实现方法: #### 功能描述 当按下按钮时,初始触发一次加/减操作;如果持续按住,则每隔一定时间间隔自动执行多次加/减操作。 --- #### 示例代码 以下是一个完整的示例代码,展示如何在 LVGL 中实现长按按钮快速增减数值的功能: ```c #include "lvgl/lvgl.h" // 定义全局变量用于存储当前值和定时器句柄 static int current_value = 0; static lv_timer_t *long_press_timer = NULL; // 增加函数 void increment_value(lv_event_t *e) { current_value++; printf("Value incremented: %d\n", current_value); } // 减少函数 void decrement_value(lv_event_t *e) { current_value--; printf("Value decremented: %d\n", current_value); } // 长按回调函数 static void long_press_callback(lv_timer_t *timer) { lv_obj_t *btn = (lv_obj_t *)timer->user_data; // 获取绑定的对象 const char *text = lv_btn_get_text(btn); // 获取按钮上的文字 if (strcmp(text, "+") == 0) { // 如果是 "+" 按钮 increment_value(NULL); } else if (strcmp(text, "-") == 0) { // 如果是 "-" 按钮 decrement_value(NULL); } } // 初始化按钮及其事件 void create_buttons(void) { // 创建 "+" 按钮 lv_obj_t *plus_button = lv_btn_create(lv_scr_act()); lv_obj_set_size(plus_button, 80, 40); lv_obj_align(plus_button, LV_ALIGN_TOP_MID, 0, 10); lv_label_t *label_plus = lv_label_create(plus_button); lv_label_set_text(label_plus, "+"); // 绑定点击事件到 "+" 按钮 lv_obj_add_event_cb(plus_button, [](lv_event_t *e) { lv_obj_t *obj = lv_event_get_target(e); switch (lv_event_get_code(e)) { case LV_EVENT_PRESSED: increment_value(e); break; case LV_EVENT_LONG_PRESSED_REPEAT: if (!long_press_timer) { long_press_timer = lv_timer_create(long_press_callback, 100, obj); // 设置重复时间为 100ms } break; case LV_EVENT_RELEASED: if (long_press_timer) { lv_timer_del(long_press_timer); // 删除定时器 long_press_timer = NULL; } break; } }, LV_EVENT_ALL, NULL); // 创建 "-" 按钮 lv_obj_t *minus_button = lv_btn_create(lv_scr_act()); lv_obj_set_size(minus_button, 80, 40); lv_obj_align(minus_button, LV_ALIGN_BOTTOM_MID, 0, -10); lv_label_t *label_minus = lv_label_create(minus_button); lv_label_set_text(label_minus, "-"); // 绑定点击事件到 "-" 按钮 lv_obj_add_event_cb(minus_button, [](lv_event_t *e) { lv_obj_t *obj = lv_event_get_target(e); switch (lv_event_get_code(e)) { case LV_EVENT_PRESSED: decrement_value(e); break; case LV_EVENT_LONG_PRESSED_REPEAT: if (!long_press_timer) { long_press_timer = lv_timer_create(long_press_callback, 100, obj); // 设置重复时间为 100ms } break; case LV_EVENT_RELEASED: if (long_press_timer) { lv_timer_del(long_press_timer); // 删除定时器 long_press_timer = NULL; } break; } }, LV_EVENT_ALL, NULL); } ``` 上述代码实现了两个按钮(`+` 和 `-`),分别用于增加和减少一个整数 `current_value` 的值。通过设置 `LV_EVENT_LONG_PRESSED_REPEAT` 事件,可以在长按时以固定的时间间隔连续触发加/减操作[^3]。 --- #### 关键点说明 1. **事件监听** 使用 `lv_obj_add_event_cb()` 方法为按钮注册事件回调函数。支持多种事件类型,如 `LV_EVENT_PRESSED`, `LV_EVENT_LONG_PRESSED_REPEAT`, 和 `LV_EVENT_RELEASED` 等[^3]。 2. **定时器管理** 利用 `lv_timer_create()` 创建定时器,在每次触发 `LV_EVENT_LONG_PRESSED_REPEAT` 时启动定时器,并在松开按钮 (`LV_EVENT_RELEASED`) 后删除定时器[^3]。 3. **动态更新界面** 可以进一步扩展此功能,将 `current_value` 显示在一个标签控件上,实时反映其变化情况。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值