quartz 表達式最近10次執行時間接口編寫

Nuget安裝

<PackageReference Include="CronExpressionDescriptor" Version="2.41.0" />
<PackageReference Include="CronExpressionDescriptor-zh-CN" Version="2.32.0" />
<PackageReference Include="Quartz" Version="3.14.0" />

Post 接口:Mock

using System.Diagnostics;
using CronExpressionDescriptor;
using Microsoft.AspNetCore.Mvc;
using Quartz;
using SaaS.OfficialWebSite.Web.Models;namespace SaaS.OfficialWebSite.Web.Controllers
{public class HomeController : Controller{private readonly ILogger<HomeController> _logger;public HomeController(ILogger<HomeController> logger){_logger = logger;}public IActionResult Index(){return View();}public IActionResult CronDescr(){return View();}[HttpPost]public IActionResult Mock(MockCronRequest cronRequest){var mockCronResponse = new MockCronResponse { Data = new MockCronModel { } };try{var cronDescription = CronExpressionDescriptor.ExpressionDescriptor.GetDescription(cronRequest.Cron, new Options(){DayOfWeekStartIndexZero = true,Use24HourTimeFormat = true,Locale = "zh-CN"});mockCronResponse.Data.CronDescription = cronDescription;var count = 10;// 計算并輸出執行時間點var fireTimes = GetNextFireTimes(cronRequest.Cron, count);Console.WriteLine($"表達式: {cronRequest.Cron}");Console.WriteLine($"接下來 {count} 次執行時間點:");Console.WriteLine("-------------------------------");mockCronResponse.Data.NextTriggers = new List<string>();for (int i = 0; i < fireTimes.Count; i++){var next = $"{fireTimes[i]:yyyy-MM-dd HH:mm:ss.fff}";Console.WriteLine(next);mockCronResponse.Data.NextTriggers.Add(next);}mockCronResponse.Success = true;}catch (Exception ex){_logger.LogError(ex.Message, ex);mockCronResponse.Success = false;mockCronResponse.Message = ex.Message;}return Ok(mockCronResponse);}public static List<DateTimeOffset> GetNextFireTimes(string cronExpression, int count, DateTimeOffset? startTime = null){var results = new List<DateTimeOffset>();// 獲取北京時間時區TimeZoneInfo chinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById(OperatingSystem.IsWindows() ?"China Standard Time" :"Asia/Shanghai");// 設置起始時間為當前北京時間startTime ??= TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, chinaTimeZone);// 創建Cron表達式解析器(指定北京時間時區)var cronTrigger = (ICronTrigger)TriggerBuilder.Create().WithCronSchedule(cronExpression, x => x.InTimeZone(chinaTimeZone)).Build();// 獲取后續觸發時間點DateTimeOffset? current = startTime;for (int i = 0; i < count; i++){current = cronTrigger.GetFireTimeAfter(current);if (!current.HasValue) break;// 確保時間點是北京時間results.Add(TimeZoneInfo.ConvertTime(current.Value, chinaTimeZone));}return results;}}
}

運行效果:Cron表達式生成器

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910206.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解鎖數據寶藏:數據挖掘之數據預處理全解析

目錄 一、引言&#xff1a;數據預處理 —— 數據挖掘的基石二、數據預處理的重要性2.1 現實數據的問題剖析2.2 數據預處理的關鍵作用 三、數據預處理的核心方法3.1 數據清洗3.1.1 缺失值處理3.1.2 離群點處理3.1.3 噪聲處理 3.2 數據集成3.2.1 實體識別3.2.2 冗余處理3.2.3 數據…

React+Taro創建小程序

第一步&#xff1a;首先確認是否安裝Node.js和npm 如果已安裝Node.js和npm,以下可以查詢 node -v npm -v 第二步&#xff1a;安裝Taro CLI npm install -g tarojs/cli 第三步&#xff1a;創建項目 taro init my-react-taro-app 然后可以看到&#xff0c;下圖 第四步&…

佳能Canon TS3100 Series打印機信息

打印功能 打印速度&#xff1a;黑白約 7.7 頁 / 分鐘&#xff0c;彩色約 4 頁 / 分鐘。打印分辨率&#xff1a;最高可達 48001200dpi&#xff0c;墨滴最小間距為 1/4800 英寸&#xff0c;能夠保證高質量的輸出&#xff0c;使文字清晰、色彩鮮艷。打印寬度&#xff1a;203.2 毫米…

家用電腦搭建可外網訪問的網站服務器操作流程

在互聯網時代&#xff0c;擁有一個屬于自己的網站是展示個人風采、分享知識經驗、開展線上業務的絕佳方式。你是否想過&#xff0c;利用家中閑置的電腦&#xff0c;就能搭建出一個可以被外網訪問的網站服務器&#xff1f;這不僅能滿足個性化需求&#xff0c;還能節省租用專業服…

CSS知識補充 --- 控制繼承

每天學習一點點&#xff01;&#xff01;&#xff01; 總所周知&#xff0c;CSS某些屬性可以繼承&#xff0c;然后今天看到MDN的時候看到了CSS也可以控制繼承&#xff0c;感覺很有意思&#xff0c;所以記錄一下&#xff1a; 控制繼承有5個屬性值&#xff0c;分別&#xff1a;in…

如何使用Ant Design Blazor組件在列表頁彈窗增加修改數據

在winform中首次使用net8做頁面。列表頁想使用Ant Design組件的彈窗組件實現。但第一次在winform項目中使用ant design組件&#xff0c;列表頁面&#xff0c;點擊新增&#xff0c;或者編輯操作實現彈窗頁面&#xff0c;彈窗頁面想使用模板頁razor頁來實現&#xff0c;而不是用m…

嵌入式學習 51單片機01

一、框架 1、CPU&#xff08;Central Processing Unit&#xff0c;中央處理單元&#xff09;?是計算機的核心部件&#xff0c;負責執行計算機指令和處理數據。 2、MCU&#xff08;Microcontroller Unit&#xff0c;微控制單元&#xff09;?是一種將中央處理器、內存、輸入輸出…

C語言之內存對齊

一、為什么要內存對齊 Arm對內存的訪問支持字&#xff08;4byte&#xff09;、半字&#xff08;2byte&#xff09;、字節&#xff08;1byte&#xff09;的直接訪問&#xff0c;但是呢他們是有一定的要求的&#xff1a; 存取字時要求地址按字對齊&#xff0c;也就是地址要是4的…

Python 基礎語法 -----函數

一、函數 1、函數是什么 編程中的函數和數學中的函數有一定的相似之處。 數學上的函數&#xff0c;比如 y sin x&#xff0c;x 取不同的值&#xff0c;y 就會得到不同的結果。 編程中的函數是一段可以被重復使用的代碼片段。 &#xff08;1&#xff09;求數列的和&#x…

Windows/Linux系統 Ollama部署deepseek 大模型

Ollama 是一個開源工具&#xff0c;專門用于在本地計算機上運行和操作大型語言模型&#xff08;LLM&#xff09; 官方下載網站&#xff08;https://ollama.ai/&#xff09; Windows系統安裝方法 建議命令行安裝&#xff08;默認安裝會直接安裝到C盤&#xff09; OllamaSetu…

用Tensorflow進行線性回歸和邏輯回歸(一)

這一章告訴你如何用TensorFlow構建簡單的機器學習系統。第一部分回顧構建機器學習系統的基礎特別是講函數&#xff0c;連續性&#xff0c;可微性。接著我們介紹損失函數&#xff0c;然后討論機器學習歸根于找到復雜的損失函數最小化的點的能力。我們然后講梯度下降&#xff0c;…

java/.net跨平臺UI瀏覽器SDK,瀏覽器控件開發包分析

在 Linux 系統中&#xff0c;雖然沒有完全等同于安卓 WebView 的內置瀏覽器 SDK&#xff0c;但存在多種基于開源瀏覽器引擎的解決方案&#xff0c;支持通過 Java 代碼控制網頁加載和執行 JavaScript。以下是具體實現方案和技術細節&#xff1a; 一、核心技術方案對比 方案名稱…

Taro 狀態管理全面指南:從本地狀態到全局方案

在跨端應用開發中&#xff0c;狀態管理是構建可維護、可擴展應用的核心環節。作為京東凹凸實驗室推出的多端統一開發框架&#xff0c;Taro 支持 React/Vue 等主流前端框架&#xff0c;自然也繼承了豐富的狀態管理生態。本文將全面剖析 Taro 中的各種狀態管理方案&#xff0c;從…

記錄一下jar做成windows服務問題

1、打包好jar 2、把jdk防止到和jar同一目錄下 3、下載winsw-x64.exe 和 sample-minimal.xml https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exehttps://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe sample-minimal.xmlhttps://…

【Dify 案例】【MCP實戰】【二】【超級助理】

我們創建一個工作流。你是一個超級助理,能夠根據輸入的指令,進行推理和自主調用工具,完成并輸出結果。 注意,需要判斷是否調用高德MCP來獲取對應工具協助你完成任務。 1.開始 2.策略大腦 2.1 AEGNT策略 2.2 工具列表 2.3 指令

Qt Quick 與 QML(二)qml中的頂級窗口

一、前言 在QML中&#xff0c;?頂級窗口不是絕對必需的?&#xff0c;但它在大多數應用場景中扮演著關鍵角色。 需要頂級窗口的典型場景&#xff1a; 1.獨立桌面/移動應用? 必須使用Window或ApplicationWindow作為根元素。 2.多窗口應用 每個獨立窗口都需要一個頂級窗口實例…

華為云Flexus+DeepSeek征文|DeepSeek-V3/R1 免費服務開通全流程與Rest API和OpenAI SDK調用詳解

華為云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 免費服務開通全流程與Rest API和OpenAI SDK調用詳解 前言 本文將詳細介紹DeepSeek-V3/R1 免費服務開通全流程&#xff0c;并且詳細講解通過本地方式Rest API和OpenAI SDK兩種方式調用DeepSeek-V3/R1 前提準備 1、訪問 Mod…

Qt 連接信號使用lambda表達式和槽函數的區別

1. 語法與代碼結構 成員函數 需在類中顯式聲明槽函數&#xff08;public slots: 或 Qt 5 后的任意成員函數&#xff09;&#xff0c;并在連接時指定接收對象。 class Receiver : public QObject {Q_OBJECT public slots:void handleSignal(int value) { /* ... */ } };// 連接…

學習筆記丨AR≠VR:透視沉浸式技術的“虛實象限”法則

AR&#xff08;增強現實&#xff09;和VR&#xff08;虛擬現實&#xff09;是沉浸式技術的兩大分支&#xff0c;核心區別在于虛擬與現實的融合程度。以下是兩者的詳細對比&#xff1a; 對比維度 AR&#xff08;增強現實&#xff09; VR&#xff08;虛擬現實&#xff09; 技術…

本地使用 modelscope 大模型 來進行文本生成視頻(Text-to-Video)

1. ? 創建并激活 Conda 環境&#xff08;Python 3.8&#xff09; conda create -n modelscope python3.8 -yconda activate modelscope 2.? 安裝了 PyTorch&#xff08;CPU 版本&#xff09; 如果你是 CPU-only 用戶&#xff08;沒有 NVIDIA 顯卡 或不想用 GPU&#xff0…