ncrontab - Crontab for .NET - Google Project

系统 1888 0

ncrontab - Crontab for .NET - Google Project Hosting

A library written in C# 3.0 that provides the following facilities:

  • Parsing of crontab expressions
  • Formatting of crontab expressions
  • Calculation of occurrences of time based on a crontab schedule

This library does not provide any scheduler or is not a scheduling facility like cron from Unix platforms. What it provides is parsing, formatting and an algorithm to produce occurrences of time based on a give schedule expressed in the crontab format:

      
        *
      
      
      
      
        *
      
      
      
      
        *
      
      
      
      
        *
      
      
      
      
        *
      
      
        
- - - - -
| | | | |
| | | | +----- day of week ( 0 - 6 ) ( Sunday = 0 )
| | | +------- month ( 1 - 12 )
| | +--------- day of month ( 1 - 31 )
| +----------- hour ( 0 - 23 )
+------------- min ( 0 - 59 )

Star ( * ) in the value field above means all legal values as in parentheses for that column. The value column can have a * or a list of elements separated by commas. An element is either a number in the ranges shown above or two numbers in the range separated by a hyphen (meaning an inclusive range). For more, see CrontabExpression .

Below is an example in IronPython of how to use CrontabSchedule class from NCrontab to generate occurrences of the schedule 0 12 * */2 Mon (meaning, 12:00 PM on Monday of every other month, starting with January ) throughout the year 2000:

      
        IronPython
      
      
      
      
        1.1
      
      
      
      
        (
      
      
        1.1
      
      
        )
      
      
         on 
      
      
        .
      
      
        NET 
      
      
        2.0
      
      
        .
      
      
        50727.1434
      
      
        
Copyright ( c ) Microsoft Corporation . All rights reserved .
>>> import clr
>>> clr . AddReferenceToFileAndPath ( r 'C:\NCrontab\bin\Release\NCrontab.dll' )
>>> from System import DateTime
>>> from NCrontab import CrontabSchedule
>>> s = CrontabSchedule . Parse ( '0 12 * */2 Mon' )
>>> start = DateTime ( 2000 , 1 , 1 )
>>> end = start . AddYears ( 1 )
>>> occurrences = s . GetNextOccurrences ( start , end )
>>> print '\n' . join ([ t . ToString ( 'ddd, dd MMM yyyy hh:mm' ) for t in occurrences ])
Mon , 03 Jan 2000 12 : 00
Mon , 10 Jan 2000 12 : 00
Mon , 17 Jan 2000 12 : 00
Mon , 24 Jan 2000 12 : 00
Mon , 31 Jan 2000 12 : 00
Mon , 06 Mar 2000 12 : 00
Mon , 13 Mar 2000 12 : 00
Mon , 20 Mar 2000 12 : 00
Mon , 27 Mar 2000 12 : 00
Mon , 01 May 2000 12 : 00
Mon , 08 May 2000 12 : 00
Mon , 15 May 2000 12 : 00
Mon , 22 May 2000 12 : 00
Mon , 29 May 2000 12 : 00
Mon , 03 Jul 2000 12 : 00
Mon , 10 Jul 2000 12 : 00
Mon , 17 Jul 2000 12 : 00
Mon , 24 Jul 2000 12 : 00
Mon , 31 Jul 2000 12 : 00
Mon , 04 Sep 2000 12 : 00
Mon , 11 Sep 2000 12 : 00
Mon , 18 Sep 2000 12 : 00
Mon , 25 Sep 2000 12 : 00
Mon , 06 Nov 2000 12 : 00
Mon , 13 Nov 2000 12 : 00
Mon , 20 Nov 2000 12 : 00
Mon , 27 Nov 2000 12 : 00

Below is the same example in F# Interactive ( fsi.exe ):

      
        Microsoft
      
      
      
      
        (
      
      
        R
      
      
        )
      
      
         F
      
      
        # 2.0 Interactive build 4.0.40219.1
      
      
        
Copyright ( c ) Microsoft Corporation . All Rights Reserved .

For help type #help;;

> #r "NCrontab.dll"
-
- open NCrontab
- open System
-
- let schedule = CrontabSchedule . Parse ( "0 12 * */2 Mon" )
- let startDate = DateTime ( 2000 , 1 , 1 )
- let endDate = startDate . AddYears ( 1 )
-
- let occurrences = schedule . GetNextOccurrences ( startDate , endDate )
- occurrences |> Seq . map ( fun t -> t . ToString ( "ddd, dd MMM yyy hh:mm" ))
-             |> String . concat "\n"
-             |> printfn "%s" ;;

--> Referenced 'C:\NCrontab\bin\Release\NCrontab.dll'

Mon , 03 Jan 2000 12 : 00
Mon , 10 Jan 2000 12 : 00
Mon , 17 Jan 2000 12 : 00
Mon , 24 Jan 2000 12 : 00
Mon , 31 Jan 2000 12 : 00
Mon , 06 Mar 2000 12 : 00
Mon , 13 Mar 2000 12 : 00
Mon , 20 Mar 2000 12 : 00
Mon , 27 Mar 2000 12 : 00
Mon , 01 May 2000 12 : 00
Mon , 08 May 2000 12 : 00
Mon , 15 May 2000 12 : 00
Mon , 22 May 2000 12 : 00
Mon , 29 May 2000 12 : 00
Mon , 03 Jul 2000 12 : 00
Mon , 10 Jul 2000 12 : 00
Mon , 17 Jul 2000 12 : 00
Mon , 24 Jul 2000 12 : 00
Mon , 31 Jul 2000 12 : 00
Mon , 04 Sep 2000 12 : 00
Mon , 11 Sep 2000 12 : 00
Mon , 18 Sep 2000 12 : 00
Mon , 25 Sep 2000 12 : 00
Mon , 06 Nov 2000 12 : 00
Mon , 13 Nov 2000 12 : 00
Mon , 20 Nov 2000 12 : 00
Mon , 27 Nov 2000 12 : 00

val schedule
: NCrontab . CrontabSchedule = 0 12 * 1 , 3 , 5 , 7 , 9 , 11 1
val startDate
: System . DateTime = 1 / 1 / 2000 12 : 00 : 00 AM
val endDate
: System . DateTime = 1 / 1 / 2001 12 : 00 : 00 AM
val occurrences
: seq < System . DateTime >

ncrontab - Crontab for .NET - Google Project Hosting


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论