有没有办法以前定义配置进程的时间间隔?

时间:2010-03-23 21:22:18

标签: language-agnostic datetime

措辞严厉的问题......我知道。

我正在处理一个处理前一天数据的应用程序。问题是我知道客户最终会要求每小时或其他任意时间间隔。我知道Java或SQL等语言都有定义日期的掩码。那么定义时间间隔的方法呢?

让我这样问。如果有人要求您创建可配置的软件,您将如何允许用户指定时间间隔?

更新

我正在寻找的是文字表达。想象一下将放入配置文件中的某些东西。

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题。你想要一种输入时间间隔的方法吗?

我不了解您的环境,但大多数语言框架提供了一些或多或少复杂的GUI组件。像日历控件这样的东西可能就是你想要的东西吗?

编辑:啊,它是命令行(或配置文件)。

  • 你能解析一个XML文件吗?在这种情况下,您可以序列化一个时间跨度(大多数语言都有这样的类)。用户可以编辑XML文件,通常只是替换<minutes>部分的值。反序列化此XML文件以再次获取Timespan非常简单。

  • 如果您更喜欢纯文本或命令行输入,那就不那么容易了。但是,许多语言都支持某种Timespan.Parse(字符串文本,字符串格式)。您应该查看您的环境中是否存在此概念。

  • 许多环境提供某种sscanf(),它解析输入字符串。有时也有“时间”格式。

  • 如果早期的想法没有提供解决方案,您可以尝试使用正则表达式解析日期。本网站和网站上应该有很多关于此主题的资源。

  • 如果您不喜欢正则表达式,请根据您自己的格式规则拆分输入字符串。这虽然是一种丑陋的解决方案。

  • 如果您不想手动拆分用户输入字符串,请使用Random.NextInt(1000)并希望没有人注意到。 0: - )

答案 1 :(得分:1)

以下是Google App Engine的cron API的配置方式,它比cron更加用户友好:

http://code.google.com/appengine/docs/python/config/cron.html#The_Schedule_Format

实现它的Python(和Java?)源应该在SDK中可用。没有看到提取是多么容易,但它至少应该提供一些想法。

我认为可以根据需要在格式中添加各种内容 - 它的结构足以实现可扩展性。例如,它目前缺少说“过去4分钟的每小时”的能力,这在UNIX cron中很常见,但与GAE并不真实相关,因为尽管可能引擎可以确定哪些分钟正忙,哪些不是' t,和平衡负载,用户肯定不能。

显然,为普通用户提供看起来像自然语言的东西的主要弱点是,他们会认为你的代码是通灵的,并且期望它也能理解“除了复活节后一周以外的每隔一个星期三”,或“每当时钟发生变化”; - )