├── src └── .gitkeep ├── bun.lockb ├── index.ts ├── package.json ├── LICENSE ├── tsconfig.json ├── generate.ts ├── .gitignore └── README.md /src/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/samwho/everycron/HEAD/bun.lockb -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import cron from "./src/crons"; 2 | 3 | console.log(cron.EVERY_MINUTE); 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "everycron", 3 | "module": "index.ts", 4 | "type": "module", 5 | "devDependencies": { 6 | "@types/bun": "latest" 7 | }, 8 | "peerDependencies": { 9 | "typescript": "^5.0.0" 10 | }, 11 | "dependencies": { 12 | "@types/progress": "^2.0.7", 13 | "cronstrue": "^2.51.0", 14 | "progress": "^2.0.3" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 Sam Hocevar 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // Enable latest features 4 | "lib": ["ESNext"], 5 | "target": "ESNext", 6 | "module": "ESNext", 7 | "moduleDetection": "force", 8 | "jsx": "react-jsx", 9 | "allowJs": true, 10 | 11 | // Bundler mode 12 | "moduleResolution": "bundler", 13 | "allowImportingTsExtensions": true, 14 | "verbatimModuleSyntax": true, 15 | "noEmit": true, 16 | 17 | // Best practices 18 | "strict": true, 19 | "skipLibCheck": true, 20 | "noFallthroughCasesInSwitch": true, 21 | 22 | // Some stricter flags (disabled by default) 23 | "noUnusedLocals": false, 24 | "noUnusedParameters": false, 25 | "noPropertyAccessFromIndexSignature": false 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /generate.ts: -------------------------------------------------------------------------------- 1 | import cronstrue from "cronstrue"; 2 | import ProgressBar from "progress"; 3 | import fs from "fs"; 4 | 5 | const minutes = [ 6 | ...Array(60).keys(), 7 | "*", 8 | ...Array.from({ length: 12 }, (_, i) => `*/${i + 1}`), 9 | ]; 10 | const hours = [ 11 | ...Array(24).keys(), 12 | "*", 13 | ...Array.from({ length: 12 }, (_, i) => `*/${i + 1}`), 14 | ]; 15 | const daysOfMonth = [...Array(31).keys()] 16 | .map((i) => i + 1) 17 | .concat("*", ...Array.from({ length: 10 }, (_, i) => `*/${i + 1}`)); 18 | const months = [...Array(12).keys()] 19 | .map((i) => i + 1) 20 | .concat("*", ...Array.from({ length: 4 }, (_, i) => `*/${i + 1}`)); 21 | const daysOfWeek = [ 22 | ...Array(7).keys(), 23 | "*", 24 | ...Array.from({ length: 7 }, (_, i) => `*/${i + 1}`), 25 | ]; 26 | 27 | function* allCrons(): Generator { 28 | for (const minute of minutes) { 29 | for (const hour of hours) { 30 | for (const dayOfMonth of daysOfMonth) { 31 | for (const month of months) { 32 | for (const dayOfWeek of daysOfWeek) { 33 | yield `${minute} ${hour} ${dayOfMonth} ${month} ${dayOfWeek}`; 34 | } 35 | } 36 | } 37 | } 38 | } 39 | } 40 | 41 | function toConstantName(input: string): string { 42 | return input 43 | .toUpperCase() 44 | .replace(/[^A-Z0-9]+/g, "_") 45 | .replace(/^_|_$/g, "") 46 | .replace(/_{2,}/g, "_") 47 | .replaceAll("_THE_", "_"); 48 | } 49 | 50 | const progress = new ProgressBar("Generating crons [:bar] :percent :etas", { 51 | total: 52 | minutes.length * 53 | hours.length * 54 | daysOfMonth.length * 55 | months.length * 56 | daysOfWeek.length, 57 | }); 58 | 59 | const file = fs.createWriteStream("src/crons.ts"); 60 | const seen = new Set(); 61 | 62 | file.write("export default {\n"); 63 | 64 | for (const cron of allCrons()) { 65 | const human = cronstrue.toString(cron, { 66 | use24HourTimeFormat: true, 67 | }); 68 | const name = toConstantName(human); 69 | if (!seen.has(name)) { 70 | file.write(`${name}:"${cron}",\n`); 71 | seen.add(name); 72 | } 73 | progress.tick(); 74 | } 75 | 76 | file.write("};\n"); 77 | 78 | export default { 79 | foo: "bar", 80 | }; 81 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore 2 | 3 | src/crons.ts 4 | 5 | # Logs 6 | 7 | logs 8 | _.log 9 | npm-debug.log_ 10 | yarn-debug.log* 11 | yarn-error.log* 12 | lerna-debug.log* 13 | .pnpm-debug.log* 14 | 15 | # Caches 16 | 17 | .cache 18 | 19 | # Diagnostic reports (https://nodejs.org/api/report.html) 20 | 21 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 22 | 23 | # Runtime data 24 | 25 | pids 26 | _.pid 27 | _.seed 28 | *.pid.lock 29 | 30 | # Directory for instrumented libs generated by jscoverage/JSCover 31 | 32 | lib-cov 33 | 34 | # Coverage directory used by tools like istanbul 35 | 36 | coverage 37 | *.lcov 38 | 39 | # nyc test coverage 40 | 41 | .nyc_output 42 | 43 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 44 | 45 | .grunt 46 | 47 | # Bower dependency directory (https://bower.io/) 48 | 49 | bower_components 50 | 51 | # node-waf configuration 52 | 53 | .lock-wscript 54 | 55 | # Compiled binary addons (https://nodejs.org/api/addons.html) 56 | 57 | build/Release 58 | 59 | # Dependency directories 60 | 61 | node_modules/ 62 | jspm_packages/ 63 | 64 | # Snowpack dependency directory (https://snowpack.dev/) 65 | 66 | web_modules/ 67 | 68 | # TypeScript cache 69 | 70 | *.tsbuildinfo 71 | 72 | # Optional npm cache directory 73 | 74 | .npm 75 | 76 | # Optional eslint cache 77 | 78 | .eslintcache 79 | 80 | # Optional stylelint cache 81 | 82 | .stylelintcache 83 | 84 | # Microbundle cache 85 | 86 | .rpt2_cache/ 87 | .rts2_cache_cjs/ 88 | .rts2_cache_es/ 89 | .rts2_cache_umd/ 90 | 91 | # Optional REPL history 92 | 93 | .node_repl_history 94 | 95 | # Output of 'npm pack' 96 | 97 | *.tgz 98 | 99 | # Yarn Integrity file 100 | 101 | .yarn-integrity 102 | 103 | # dotenv environment variable files 104 | 105 | .env 106 | .env.development.local 107 | .env.test.local 108 | .env.production.local 109 | .env.local 110 | 111 | # parcel-bundler cache (https://parceljs.org/) 112 | 113 | .parcel-cache 114 | 115 | # Next.js build output 116 | 117 | .next 118 | out 119 | 120 | # Nuxt.js build / generate output 121 | 122 | .nuxt 123 | dist 124 | 125 | # Gatsby files 126 | 127 | # Comment in the public line in if your project uses Gatsby and not Next.js 128 | 129 | # https://nextjs.org/blog/next-9-1#public-directory-support 130 | 131 | # public 132 | 133 | # vuepress build output 134 | 135 | .vuepress/dist 136 | 137 | # vuepress v2.x temp and cache directory 138 | 139 | .temp 140 | 141 | # Docusaurus cache and generated files 142 | 143 | .docusaurus 144 | 145 | # Serverless directories 146 | 147 | .serverless/ 148 | 149 | # FuseBox cache 150 | 151 | .fusebox/ 152 | 153 | # DynamoDB Local files 154 | 155 | .dynamodb/ 156 | 157 | # TernJS port file 158 | 159 | .tern-port 160 | 161 | # Stores VSCode versions used for testing VSCode extensions 162 | 163 | .vscode-test 164 | 165 | # yarn v2 166 | 167 | .yarn/cache 168 | .yarn/unplugged 169 | .yarn/build-state.yml 170 | .yarn/install-state.gz 171 | .pnp.* 172 | 173 | # IntelliJ based IDEs 174 | .idea 175 | 176 | # Finder (MacOS) folder config 177 | .DS_Store 178 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # everycron 2 | 3 | Find crons hard to read? Always opening https://crontab.guru to figure out 4 | what's going on? All your problems are about to be solved. 5 | 6 | `everycron` exposes constants with human-readable names to make it much easier 7 | to find the cron expression you need! 8 | 9 | ## Generating `src/crons.ts` 10 | 11 | `generate.ts` is what generates `src/crons.ts`. I did used to commit it to 12 | the repo but it's massive and costs about $5/mo in git LFS, and the bit isn't 13 | worth that to me. 14 | 15 | ```bash 16 | bun generate.ts 17 | ``` 18 | 19 | This takes about 5-10 minutes and needs about 7GB of RAM. 20 | 21 | ## Stats 22 | 23 | `src/crons.ts` contains: 24 | 25 | 1. 23,804,927 unique cron expressions. 26 | 2. 1.9GB of data. 27 | 28 | It is highly unlikely your cron use-case can not be served by this file. 29 | 30 | ## Usage 31 | 32 | ```typescript 33 | import cron from "./src/crons"; 34 | 35 | console.log(cron.EVERY_MINUTE); 36 | ``` 37 | 38 | On my M1 Max MacBook Pro this takes 3 hours and 38 seconds to run, and consumes 39 | about 14GB of RAM. 40 | 41 | ## Sample contents 42 | 43 | In case you don't want to clone this repo and spend the 5-10 minutes generating 44 | the file for yourself, here's the first 100 lines of `src/crons.ts`: 45 | 46 | ```typescript 47 | export default { 48 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_JANUARY:"0 0 1 1 0", 49 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_JANUARY:"0 0 1 1 1", 50 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_JANUARY:"0 0 1 1 2", 51 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_JANUARY:"0 0 1 1 3", 52 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_JANUARY:"0 0 1 1 4", 53 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_JANUARY:"0 0 1 1 5", 54 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_JANUARY:"0 0 1 1 6", 55 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_JANUARY:"0 0 1 1 *", 56 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_JANUARY:"0 0 1 1 */2", 57 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_JANUARY:"0 0 1 1 */3", 58 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_JANUARY:"0 0 1 1 */4", 59 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_JANUARY:"0 0 1 1 */5", 60 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_JANUARY:"0 0 1 1 */6", 61 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_JANUARY:"0 0 1 1 */7", 62 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_FEBRUARY:"0 0 1 2 0", 63 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_FEBRUARY:"0 0 1 2 1", 64 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_FEBRUARY:"0 0 1 2 2", 65 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_FEBRUARY:"0 0 1 2 3", 66 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_FEBRUARY:"0 0 1 2 4", 67 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_FEBRUARY:"0 0 1 2 5", 68 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_FEBRUARY:"0 0 1 2 6", 69 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_FEBRUARY:"0 0 1 2 *", 70 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_FEBRUARY:"0 0 1 2 */2", 71 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_FEBRUARY:"0 0 1 2 */3", 72 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_FEBRUARY:"0 0 1 2 */4", 73 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_FEBRUARY:"0 0 1 2 */5", 74 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_FEBRUARY:"0 0 1 2 */6", 75 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_FEBRUARY:"0 0 1 2 */7", 76 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_MARCH:"0 0 1 3 0", 77 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_MARCH:"0 0 1 3 1", 78 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_MARCH:"0 0 1 3 2", 79 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_MARCH:"0 0 1 3 3", 80 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_MARCH:"0 0 1 3 4", 81 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_MARCH:"0 0 1 3 5", 82 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_MARCH:"0 0 1 3 6", 83 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_MARCH:"0 0 1 3 *", 84 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_MARCH:"0 0 1 3 */2", 85 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_MARCH:"0 0 1 3 */3", 86 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_MARCH:"0 0 1 3 */4", 87 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_MARCH:"0 0 1 3 */5", 88 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_MARCH:"0 0 1 3 */6", 89 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_MARCH:"0 0 1 3 */7", 90 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_APRIL:"0 0 1 4 0", 91 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_APRIL:"0 0 1 4 1", 92 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_APRIL:"0 0 1 4 2", 93 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_APRIL:"0 0 1 4 3", 94 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_APRIL:"0 0 1 4 4", 95 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_APRIL:"0 0 1 4 5", 96 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_APRIL:"0 0 1 4 6", 97 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_APRIL:"0 0 1 4 *", 98 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_APRIL:"0 0 1 4 */2", 99 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_APRIL:"0 0 1 4 */3", 100 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_APRIL:"0 0 1 4 */4", 101 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_APRIL:"0 0 1 4 */5", 102 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_APRIL:"0 0 1 4 */6", 103 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_APRIL:"0 0 1 4 */7", 104 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_MAY:"0 0 1 5 0", 105 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_MAY:"0 0 1 5 1", 106 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_MAY:"0 0 1 5 2", 107 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_MAY:"0 0 1 5 3", 108 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_MAY:"0 0 1 5 4", 109 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_MAY:"0 0 1 5 5", 110 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_MAY:"0 0 1 5 6", 111 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_MAY:"0 0 1 5 *", 112 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_MAY:"0 0 1 5 */2", 113 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_MAY:"0 0 1 5 */3", 114 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_MAY:"0 0 1 5 */4", 115 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_MAY:"0 0 1 5 */5", 116 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_MAY:"0 0 1 5 */6", 117 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_MAY:"0 0 1 5 */7", 118 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_JUNE:"0 0 1 6 0", 119 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_JUNE:"0 0 1 6 1", 120 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_JUNE:"0 0 1 6 2", 121 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_JUNE:"0 0 1 6 3", 122 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_JUNE:"0 0 1 6 4", 123 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_JUNE:"0 0 1 6 5", 124 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_JUNE:"0 0 1 6 6", 125 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_JUNE:"0 0 1 6 *", 126 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_JUNE:"0 0 1 6 */2", 127 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_JUNE:"0 0 1 6 */3", 128 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_JUNE:"0 0 1 6 */4", 129 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_JUNE:"0 0 1 6 */5", 130 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_JUNE:"0 0 1 6 */6", 131 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_JUNE:"0 0 1 6 */7", 132 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_JULY:"0 0 1 7 0", 133 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_MONDAY_ONLY_IN_JULY:"0 0 1 7 1", 134 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_TUESDAY_ONLY_IN_JULY:"0 0 1 7 2", 135 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_WEDNESDAY_ONLY_IN_JULY:"0 0 1 7 3", 136 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_THURSDAY_ONLY_IN_JULY:"0 0 1 7 4", 137 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_FRIDAY_ONLY_IN_JULY:"0 0 1 7 5", 138 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SATURDAY_ONLY_IN_JULY:"0 0 1 7 6", 139 | AT_00_00_ON_DAY_1_OF_MONTH_ONLY_IN_JULY:"0 0 1 7 *", 140 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_2_DAYS_OF_WEEK_ONLY_IN_JULY:"0 0 1 7 */2", 141 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_3_DAYS_OF_WEEK_ONLY_IN_JULY:"0 0 1 7 */3", 142 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_4_DAYS_OF_WEEK_ONLY_IN_JULY:"0 0 1 7 */4", 143 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_5_DAYS_OF_WEEK_ONLY_IN_JULY:"0 0 1 7 */5", 144 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_6_DAYS_OF_WEEK_ONLY_IN_JULY:"0 0 1 7 */6", 145 | AT_00_00_ON_DAY_1_OF_MONTH_EVERY_7_DAYS_OF_WEEK_ONLY_IN_JULY:"0 0 1 7 */7", 146 | AT_00_00_ON_DAY_1_OF_MONTH_AND_ON_SUNDAY_ONLY_IN_AUGUST:"0 0 1 8 0", 147 | ``` 148 | --------------------------------------------------------------------------------