天道酬勤,学无止境

用于上午 7 点至上午 11 点之间的时间的随机时间发生器 [关闭](Random Time Generator for time betweeen 7AM to 11AM [closed])

问题

我正在创建一个测试文件,我需要在上午 7 点到上午 11 点之间用随机时间填充它。 重复输入是可以的,只要它们不完全相同

我也只对 HH:MM 感兴趣(没有秒)

我不知道从哪里开始。 发帖前我用谷歌搜索,发现一个有趣的搜索结果

www.random.org/clock-times/

唯一的问题是所有“随机”生成的时间都是按顺序排列的。 我可以把它弄乱一次,但我需要生成 100 到 10,000 个条目。

我希望创建一个 WinForm C# 应用程序来帮助我做到这一点。

回答1

计算开始时间和停止时间之间的分钟数,然后生成一个介于 0 和最大分钟数之间的随机数:

Random random = new Random();
TimeSpan start = TimeSpan.FromHours(7);
TimeSpan end = TimeSpan.FromHours(11);
int maxMinutes = (int)((end - start).TotalMinutes);

for (int i = 0; i < 100; ++i) {
   int minutes = random.Next(maxMinutes);
   TimeSpan t = start.Add(TimeSpan.FromMinutes(minutes));
   // Do something with t...
}

笔记:

  • 你应该只创建一个随机对象,否则你会连续得到很多重复的对象。
  • 包含开始时间,但不包含结束时间。 如果您还想包括结束时间,请将 1 添加到 maxMinutes。
回答2

为下限创建一个DateTime值和一个随机生成器:

DateTime start = DateTime.Today.AddHours(7);
Random rnd = new Random();

现在您可以通过添加分钟来创建随机时间:

DateTime value = start.AddMinutes(rnd.Next(241));

要将其格式化为 HH:MM,您可以使用自定义格式:

string time = value.ToString("HH:mm");
回答3

这是一种通用方法,可为您提供给定开始日期和结束日期之间的随机日期。

public static DateTime RandomDate(Random generator, DateTime rangeStart, DateTime rangeEnd)
{
    TimeSpan span = rangeEnd - rangeStart;

    int randomMinutes = generator.Next(0, (int)span.TotalMinutes);
    return rangeStart + TimeSpan.FromMinutes(randomMinutes);
}

如果你经常使用这样的东西,你可以让它成为Random的扩展方法。

回答4

创建一个Random对象并使用它来创建一个新的DateTime

Random rand = new Random();
//Note that Random.Next(int, int) is inclusive lower bound, exclusive upper bound
DateTime myDateTime = new DateTime(2012, 11, 27, 
    rand.Next(7, 11), rand.Next(0, 60), 0);

然后在需要的地方使用时间输出。

回答5
List<DateTime> randomTimes = new List<DateTime>();
Random r = new Random();
DateTime d = new DateTime(2012, 11, 27, 7, 0, 0);

for (int i = 0; i < 100; i++)
{
    TimeSpan t = TimeSpan.FromSeconds(r.Next(0, 14400));
    randomTimes.Add(d.Add(t));
}

randomTimes.Sort();

数字14400是早上 7 点到 11 点之间的秒数,用作随机数生成的基础。

randomTimes列表可与 DateTime 格式一起使用以实现所需的输出格式,例如:

Console.WriteLine("HH:mm", randomTimes[0]);
回答6
var random = new Random();
var startDateTime = new DateTime(2000, 1, 1, 7, 0, 0, 0);
var maxDuration = TimeSpan.FromHours(4);

var values = Enumerable.Range(0, 100)
    .Select(x => {
        var duration = random.Next(0, (int)maxDuration.TotalMinutes);
        return startDateTime.AddMinutes(duration).ToString("HH:mm");
    })
    .ToList();

values = values.Distinct().ToList();

Console.WriteLine("{0} values found. Min: {1}, Max: {2}", values.Count, values.Min(), values.Max());

把我的帽子扔到戒指上:)

编辑:看到如此多的答案有点尴尬,因为这是一个非常简单的问题。 总之,很高兴看到不同的风格。 阅读这个问题时,我很惊讶地看到 OP 要求创建 Win Forms 应用程序来执行此操作。 任务似乎很简单,我想在 LinqPad 中编写解决方案!

回答7

一个简单的选项(选择小时和分钟作为随机ints ):

Random r = new Random();

//pick the hour
int h = r.Next(7,12);

//pick the minute
int m = 0;
if(h < 11)
    m = r.Next(0,60);

//compose the DateTime
DateTime randomDT = new DateTime(year, month, day, h, m, 0);
回答8

像这样的东西:

private static Random rng = new Random();
public IEnumerable<DateTime> RandomDateTimes( DateTime lowerBound , DateTime upperBound , int count )
{
    TimeSpan period = upperBound - lowerBound ;

    if ( period <= TimeSpan.Zero || period > new TimeSpan(1,0,0,0) ) throw new ArgumentException();
    if ( count < 0 ) throw new ArgumentException() ;

    int rangeInMinutes = (int) period.TotalMinutes ; // period is 0 through 1440

    for ( int i = 0 ; i < count ; ++i )
    {
        int offset = rng.Next(rangeInMinutes) ;
        yield return lowerBound.AddMinutes(offset) ;
    }
}
public IEnumerable<DateTime> OrderedRandomDateTimes( DateTime lowerbound , DateTime upperBound , int count )
{
    yield return RandomDateTimes( lowerbound , upperBound , count ).OrderBy( x = x ) ;
}
回答9

也许我遗漏了一些东西,但不是这么简单......

Random rand = new Random();

// Range can be any number from 100 to 10000
Enumerable.Range(1, 10000).Select(v => TimeSpan.FromMinutes(rand.Next(420, 661)))

如果您想更简单地理解数字,您可以将其扩展....

Random rand = new Random();
int startTime = Convert.ToInt32(TimeSpan.FromHours(7).TotalMinutes);
int endTime = Convert.ToInt32(TimeSpan.FromHours(11).TotalMinutes) + 1;     // To make 11:00 inclusive

Enumerable.Range(1, 10000).Select(v => TimeSpan.FromMinutes(rand.Next(startTime, endTime))).Dump();

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 具有事件div的自定义日历(Custom calendar with event divs)
    问题 我正在研究一个事件系统,该系统基本上是一个高度为720px的容器,每个像素表示从9AM到9PM的一分钟,宽度为620px(从左侧和右侧填充10px) 日历系统的自然要求是: 应该布置对象,以使其在视觉上不会重叠。 如果某个时隙中有一个事件,则其宽度将为600px 每个碰撞事件的宽度必须与碰撞事件的宽度相同。 事件应使用最大宽度,同时仍应遵守第一个约束。 输入将是一个类似于以下内容的数组: [ {id : 1, start : 30, end : 150}, // an event from 9:30am to 11:30am {id : 2, start : 540, end : 600}, // an event from 6pm to 7pm {id : 3, start : 560, end : 620}, // an event from 6:20pm to 7:20pm {id : 4, start : 610, end : 670} // an event from 7:10pm to 8:10pm ] 我已经创建了所需的布局,但是我陷入了JavaScript部分:(这是我到目前为止所拥有的: var Calendar = function() { var layOutDay = function(events) { var eventsLength =
  • 在JavaScript中生成两个日期和时间之间的随机日期(Generate random date between two dates and times in Javascript)
    问题 我想在javascript中在两个日期之间和两次之间生成一个随机日期。 例如,我想在今天和下一个明天之间生成一个随机日期(上午8点至下午6点之间)。 我已经尝试了很多东西,但是没有一个起作用,所以我不会粘贴任何代码,因为它不起作用。 有没有人做过类似的事情 function generateRandomDate(start, end) { return new Date(start + Math.random() * (end - start)); } 我用于生成随机日期的代码已发布在上面 回答1 我想我明白你的追求。 这将在start和end之间返回一个随机日期,在startHour和endHour之间startHour一个随机小时(该值应在0-23范围内)。 function randomDate(start, end, startHour, endHour) { var date = new Date(+start + Math.random() * (end - start)); var hour = startHour + Math.random() * (endHour - startHour) | 0; date.setHours(hour); return date; } 回答2 如果您只想要简单的日期,例如:('12 / 13/2013','01 / 26
  • 具有重叠时隙的会议调度算法(Meeting scheduling algorithm with Overlapping Time Slots)
    问题 我想做一些类似于约会调度算法的事情(N 人有 N 个空闲-忙时隙,约束满足)。 使用 Hopcroft-Karp 算法。 但我的额外要求是我的时间间隔是重叠的。 例如。 时间段可以是上午 10 点至上午 11 点或上午 10.15 至上午 11.15。 因此,如果我选择上午 10 点至上午 11 点时段,我不想选择上午 10.15 至上午 11.15 点时段。 是否有可能在不严重影响性能的情况下实现这一目标? 回答1 如果您使用某种流扩展器添加另一个级别区分时隙,您可以使用类似于您对 Hopcroft-Karp 提出的算法。 因此,您将有一个与人相关的源,与时间段相关的人,与时间故障相关的时间段,以及与接收器相关的故障。 为了进一步描述故障,假设您有从 10:00、10:15、10:30 和 10:45 开始的时间段。 时间故障将在 15 分钟。 如果所有会议都是一个小时,那么 10:00 时间段将连接到 10:00-10:15 细分以及 10:15-10:30、10:30-10:45 和 10:45 -11:00 故障。 在时隙和故障之间的连接处必须有一些修改的逻辑。 那是因为它们必须是时隙输入和故障连接之间的流量值的变化。 这是因为每当一个人被分配到一个时隙(时隙流入 = 1)时,就会有多个流向细分(每个上面的例子时隙流出 = 4)。 一个免责声明我没有试过这个。
  • 在数据库中存储工作时间(Storing Business Hours in a Database)
    问题 我目前正在尝试找出将业务运营时间存储在数据库中的最佳方法。 例如: 商家A的营业时间如下 星期一:9am-5pm 星期二:上午9点至下午5点星期三:上午9点至下午5点星期四:上午9点至下午5点星期五:上午9点至下午5点星期六:上午9点至中午12点周日:休息 目前,我有一个类似于以下内容的数据模型 CREATE TABLE "business_hours" ( "id" integer NOT NULL PRIMARY KEY, "day" varchar(16) NOT NULL, "open_time" time, "close_time" time ) 其中的“天”仅限于代码中一周中7天的选择(通过ORM)。 为了测试企业是否在某一天关门,它会检查open_time和close_time是否为NULL。 它通过中间表(多对多关系)与业务相关。 有没有人对此数据库方案有任何建议? 对我来说,这有些不对劲。 回答1 总体而言,我认为这没有错。 除了... 我将使用您的本机编程语言使用的任何编号系统(在其库中)将一周中的日期存储为整数。 这将减小数据库的大小,并从代码中删除字符串比较。 我可能会将外键放在此表中的业务表中。 这样,您将不需要链接表。 所以我想我会做的: CREATE TABLE "business_hours" ( "id" integer NOT NULL
  • 布尔可满足性的类计划[多项式时间缩减]第2部分(Class Scheduling to Boolean satisfiability [Polynomial-time reduction] part 2)
    问题 几天前,我问了一个有关如何将大学班级安排问题转换为布尔可满足性问题的问题。 (将类调度为布尔可满足性[多项式时间减少]) 我得到了@Amit的答复,他非常优雅并且易于编写代码。 基本上,他的回答是这样的:他没有考虑课程,而是考虑了时间间隔。 因此,对于第i门课程,他只是指示了该课程的所有可能间隔。 当每个课程至少有一个真实间隔,并且没有一个间隔重叠时,我们得到一个解决方案。 当我们只考虑课程而没有其他考虑时,这种方法非常有效。 我通过对间隔内的房间进行编码来概括它。 例如,不是说[8-10]就是说课程可以在上午8点到上午10点之间发生。 我用[0.00801-0.01001]表示在1号会议室的上午8点到10点之间可能会发生课程。 我确定您当前正在徘徊“为什么要使用double?” 好吧,因为这是我的问题: 为了继续推广这种方法,我还在此间隔内对教师的n°进行了编码。 我曾用[1.00801-1.01001]来说一门课可能发生在1号房间的上午8点到10点之间,并且由n°1的老师教授。 这是我现在得到的: 像这样[1.008XX-1.010XX]可以与[2.008YY-2.010YY]同时发生,这是正确的,如果老师1在上午8点至上午10点之间在X室教学,老师2也可以如果且仅在有空位的情况下,在8am到10am之间选择Y。 问题是:使用这种方法,我无法保证XX和YY会有所不同
  • 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……
    过场CG: 接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为【定时任务】的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案:   方案一:使用务定时任务框架quartz;   方案二:使用windows Service服务。 最终的作战方案为:两者配套使用。 前言:项目开发完成后,对接的项目有很多个模块,由于其中的一个环节疏忽,现在需要在原有的基础上把缺失的数据自动写入数据库存储起来。 重新修改程序逻辑已然不现实,现在需要一个补丁来进行逻辑更正。 补丁逻辑:两个入口控制, 入口一:点击【更新】按钮同步逻辑后的数据;入口二:每天晚上18:00进行执行同步逻辑后的数据; 现在我们先使用window服务进行入口二的编写(入口一只需要一个按钮调用入口二的逻辑即可) windows服务 一、开发环境 操作系统:Windows 7 X64/32 开发环境:VS2017 编程语言:C# .NET版本:.NET Framework 4.6.1 二、创建Windows Service 1、新建一个Windows Service,并将项目名称改为“MyWindowsService”,如下图所示: 2、在解决方案资源管理器内将Service1.cs改为MyWindowsService.cs后并在左边页面空白处点击鼠标右键,添加安装程序,如下图所示:
  • Salesforce 公式:计算两个日期之间的营业时间(Salesforce formula: Calculate business hours between two dates)
    问题 我可以用这样的公式在几分钟内轻松计算出铅的年龄: ROUND((NOW()-CreatedDate)*1440,0) 但是,我只想计算该时间跨度的营业时间(实际上是分钟)部分。 我想在 Salesforce 公式(不是顶点触发器)中执行此操作。 我在这里和这里找到了一些灵​​感。 我对这个解决方案的优先考虑: 低于 5,000 个字符限制的 Salesforce 公式比较任意两个日期时间字段(不仅仅是 NOW() 与 CreatedDate) 合理的误差幅度(+/- 3 小时) 忽略周末忽略太平洋时间上午 6 点至下午 5 点以外的时间(格林威治标准时间 13:00-23:59) 忽略 7 月 4 日和 12 月 25 日等特定假期(对于我的需求来说过于复杂) 只想计算工作日的数量? 与此处 Salesforce 支持示例建议的模板中的 1,685 个相比,此公式使用 873 个编译字符(有些人抱怨将较大的模板与其他代码组合时超过 5,000 个字符的限制)。 ( 5*FLOOR((TODAY()-DATE(1996,01,01))/7) + MIN(5, MOD(TODAY()-DATE(1996,01,01), 7)) ) - ( 5*FLOOR((DATEVALUE(CreatedDate)-DATE(1996,01,01))/7) + MIN(5, MOD
  • 如何消除Oracle的非工作时间(How to eliminate non-working hours in Oracle)
    问题 我有两列DateTime类型。 第一个在进程启动时存储DateTime,另一个在该进程完成时存储DateTime。 我想计算完成工作所需的总工作时间。 工作时间是上午10点至晚上7点,周日不营业。 以下是我简要介绍的一些摘录: SELECT col1, col2, floor(((date2-date1)*24*60*60)/3600) || ' HOURS ' || floor((((date2-date1)*24*60*60) - floor(((date2-date1)*24*60*60)/3600)*3600)/60) || ' MINUTES ' || round((((date2-date1)*24*60*60) - Floor(((date2-date1)*24*60*60)/3600)*3600 - (floor((((date2-date1)*24*60*60) - floor(((date2-date1)*24*60*60)/3600)*3600)/60)*60) )) || ' SECS ' Time_Difference From Table_Name; 和, Select To_Number(To_Char(date1, 'HH24')) || ':' || to_number(to_char(date1, 'MI')) || ':'|| to
  • 如何每天仅在特定时间重新加载页面一次(How to reload a page at certain hour and only once a day)
    问题 我有一个每分钟运行一次的javascript函数。 setInterval(function(){ //first, check time, if it is 9 AM, reload the page var now = new Date(); if (now.getHours() == 9 { window.refresh(); } //do other stuff },60000); 现在的问题是,我希望重新加载每天仅发生一次。 由于该函数每分钟运行一次,因此下次启动时,如果页面位于上午9点至上午10点之间,则会再次重新加载该页面。 如何使重新加载仅发生一次? 我可能可以通过创建另一个每小时触发一次的间隔函数来执行此操作,并检查是否应该重新加载。 但是,由于我已经拥有每分钟运行一次的上述功能,我可以从那里开始吗? 如果我确实要创建另一个每小时检查一次的函数。 如果这两个功能在同一时间启动,会发生什么? 回答1 我会存储上一次刷新的日期,计算差值,它不到6小时(为了安全起见),您不需要刷新。 var lastRefresh = new Date(); // If the user just loaded the page you don't want to refresh either setInterval(function(){ //first, check time
  • 如何检查NSDate是否在其他两个NSDate之间发生(How to Check if an NSDate occurs between two other NSDates)
    问题 我正在尝试使用NSDate找出当前日期是否在日期范围内。 例如,您可以使用NSDate获取当前日期/时间: NSDate rightNow = [NSDate date]; 然后,我想使用该日期检查它是否在9AM-5PM范围内。 回答1 我想出了一个解决方案。 如果您有更好的解决方案,请随时将其保留,我将其标记为正确。 + (BOOL)date:(NSDate*)date isBetweenDate:(NSDate*)beginDate andDate:(NSDate*)endDate { if ([date compare:beginDate] == NSOrderedAscending) return NO; if ([date compare:endDate] == NSOrderedDescending) return NO; return YES; } 回答2 对于第一部分,使用@kperryua的答案来构造要与之比较的NSDate对象。 从您对自己的问题的答案来看,听起来您已经明白了。 对于实际比较日期,我完全同意@Tim对您的回答的评论。 更为简洁,但实际上与您的代码完全相同,我将解释原因。 + (BOOL) date:(NSDate*)date isBetweenDate:(NSDate*)beginDate andDate:(NSDate*)endDate
  • 最优排班算法(Optimal shift scheduling algorithm)
    问题 一段时间以来,我一直在尝试解决我曾经工作过的游泳池的调度问题。 这个问题如下... 有 X 多个救生员在游泳池工作,每个人都有他们想要工作的特定小时数。 我们希望将每个救生员所需的平均小时数保持在尽可能低的水平,并尽可能对所有人公平。 每个救生员也是大学生,因此会有不同的可用性时间表。 每周游泳池的活动安排都与上次不同,因此每周必须创建一个新的安排。 每天在特定的时间间隔内需要如此多的救生员(例如:上午 8 点至上午 10 点有 3 名警卫,上午 10 点至下午 3 点有 4 名警卫,下午 3 点至晚上 10 点有 2 名警卫)。 这就是困难的部分。没有明确定义的轮班(时段)来放置每个救生员(因为如果救生员的可用性以及每周变化的游泳池时间表,则可能无法创建时间表事件)。 因此,必须从仅提供... 救生员及其信息(所需小时数,可用性) 游泳池的活动时间表,以及需要随时值班的警卫人数 问题现在可以明确定义为“制定一个可能的时间表,涵盖一周中每一天的所有时间所需的警卫人数,并在安排时对所有救生员尽可能公平。” 创建一个可能的时间表来涵盖一周中每一天的所有时间所需的警卫人数是问题的一部分,这是必要的,必须完全解决。 关于对所有救生员尽可能公平的后半部分使问题显着复杂化,使我相信我需要一种近似方法,因为划分工作日的可能方式可能是荒谬的,但有时可能是必要的,因为为了公平
  • 处理存储中的时区?(Handling timezones in storage?)
    问题 将所有内容都存储在格林尼治标准时间(GMT)吗? 将所有内容存储为带有嵌入式偏移量的输入方式吗? 每次渲染时都会进行数学运算吗? 显示相对时间“ 1分钟前”? 回答1 您必须存储在UTC中-否则,您在Daylight Savings之类的历史报告和行为会变得很有趣。 格林尼治标准时间是当地时间,相对于UTC,夏令时受限制(不是)。 如果您要存储本地时间,那么向不同时区的用户进行演示可能是一个混蛋。 如果您的原始数据使用UTC,则很容易调整为本地-只需添加用户的偏移量就可以了! 乔尔(Joel)在一个播客中谈到了这一点(以一种循环的方式)-他说要以尽可能高的分辨率(搜索“保真度”)存储您的数据,因为当它再次出现时,您总是可以对它进行修改。 这就是为什么我说将其存储为UTC的原因,因为本地时间需要针对不在该时区的任何人进行调整,所以这是很多艰苦的工作。 并且您需要存储例如在存储时间时夏时制是否生效。 育。 过去,我经常在数据库中存储两个-UTC用于排序,本地时间用于显示。 这样,用户和计算机都不会感到困惑。 现在,显示如下:当然,您可以执行“ 3分钟前”操作,但前提是您必须存储UTC-否则,在不同时区输入的数据将执行类似“ -4小时前”的显示操作,这将显示吓坏了人们。 如果要显示实际时间,人们会喜欢在当地时间显示它-如果要在多个时区中输入数据
  • 将考勤记录存储在数据库中(Storing attendance records in the database)
    问题 我发现之前曾问过类似的问题(学校出勤率数据库) 我必须处理这些附加条件。 记录出席的用户总数将为100,000。 每个用户都将有一个刷卡入刷卡条目。 如果用户不确定是否已捕获数据,则用户可以进行多次扫入。 必须保留1年出勤记录,用户可以访问该记录。 我认为基本表包含以下条目。 UserID-数值日期及时刷卡刷卡超时。 如果这是表,则在理想情况下,数据库中的大约行数应为= 100,000 x 250(以年为工作日)= 25,000,000。 现在,如果用户重复向内滑动或向外滑动行,则会累加起来。 说出1/3的员工这样做以确保出勤。 因此,其他行8,333,333共计约33,333,333。 问题之一是当用户向内滑动两次但仅向外滑动一次时。 然后,我需要在第二次刷卡中输入空值或在刷卡输出字段中填写相同的值。 这将增加提到的其他行。 我认为的另一个选择是每天运行后台任务以清理双重用户条目。 假设用户在上午8:00刷卡,然后在8.10 AM刷卡,则系统会在一天结束时删除8.10 AM条目。 但是,我预见的是。 如果说用户在办公室工作过夜,并且可能在凌晨2.00点刷卡,则刷卡数据为 刷卡-10年1月1日-8.00上午刷卡-2010年1月2日-凌晨2.00 刷卡-2010年1月2日-下午1:00(他当天再次回到办公室-工作压力:)) 刷卡-2010年1月2日-10.00 PM如何处理?
  • ggplot2中没有数据时换行(Line break when no data in ggplot2)
    问题 我正在使用R绘制一些数据。 Date <- c("07/12/2012 05:00:00", "07/12/2012 06:00:00", "07/12/2012 07:00:00", "07/12/2012 08:00:00","07/12/2012 10:00:00","07/12/2012 11:00:00") Date <- strptime(Date, "%d/%m/%Y %H:%M") Counts <- c("0","3","10","6","5","4") Counts <- as.numeric(Counts) df1 <- data.frame(Date,Counts,stringsAsFactors = FALSE) library(ggplot2) g = ggplot(df1, aes(x=Date, y=Counts)) + geom_line(aes(group = 1)) g 我如何要求R在有时间间隔时不要将数据绘制为连​​续线? 我通常每个小时都有一个数据点,但有时会有一个休息时间(在上午8点至上午10点之间)。 在这些点之间,我不想连接线。 在R中这可能吗? 编辑 非常感谢您的答复。 现在,我的数据间隔为10秒,我希望使用此数据进行相同的分析。 df <- structure(list(Date = c("11/12/2012", "11
  • 定时任务调度springTask和cron表达式
    文章目录 一、常用的任务调度框架和区别常用框架区别1、相同点:2、Quartz3、Task:4、总结: 二、springTask入门dmeo三、项目中实战案例1.秒杀商品列表的增量更新2.过期秒杀商品的移除 四、 cron标识和例子cron表达式格式cron表达式例子 五、在线cron生成器 一、常用的任务调度框架和区别 常用框架 在企业级应用中,经常会制定一些“计划任务”,即在某个时间点做某件事情,核心是以时间为关注点,即在一个特定的时间点,系统执行指定的一个操作。常见的任务调度框架有Quartz和SpringTask等。 区别 1、相同点: 两者均能实现定时调度任务 2、Quartz ① 默认多线程异步执行 ② 单个任务时,在上一个调度未完成时,下一个调度时间到时,会另起一个线程开始新的调度。业务繁忙时,一个任务会有多个调度,可能导致数据处理异常。 ③ 多个任务时,任务之间没有直接影响,多任务执行的快慢取决于CPU的性能 ④ 触发方式 : (1)SimpleTrigger (2)CronTrigger ⑥ 能被集群实例化,支持分布式部署 ⑦使用JobStoreCMT(JDBCJobStore的子类),Quartz 能参与JTA事务;Quartz 能管理JTA事务(开始和提交)在执行任务之间,这样,任务做的事就可以发生在JTA事务里。 3、Task: ① 默认单线程同步执行 ②
  • 上海一软件工程师春节拒带工作电脑回家被开除 法院判公司赔19.4万元
    2月1日,据上海市浦东区法院消息,2019年上海一软件工程师春节拒带工作电脑回家被开除。近日,上海浦东法院对这起案件作出一审判决,认定公司解除劳动合同的行为违法,应支付劳动者赔偿金19.4万元。公司不服提出上诉,后被驳回,目前判决已经生效。 春节拒带电脑回家被开除 小张系某咨询公司的软件工程师,工作4年后却莫名地被公司开除了。在开除通知中,公司列举了他的“罪状”:恶意拒绝执行以及恶意拖延公司安排的劳动任务、恶意违反公司制定的劳动时间规定。原来,2019年春节前,公司以小张负责维护的客户可能需要应急服务为由,通知他携带电脑回家过年,遭到拒绝。 更令公司不满的是,小张春节休了27天假,在这期间拒绝联系、上演“失联”。小张则认为,春节假期自己要陪伴家人,没有义务工作,并且27天系正当假期,包括春节假期11天,加上调休12天以及2个周末。 在午休时间的认定上双方也出现了分歧,公司认为,员工手册中明确规定了午休时间为中午12点半到13点,而小张最近半年都是从11点半就进入午休状态。对此,小张却表示,在实际工作时间安排上,公司并未按照员工手册执行。 此外,公司称小张还存在恶意拖延劳动任务的行为。2019年7月24日,公司通知小张次日上午9点到客户公司,小张却拖延至中午才到。小张对此解释道,收到通知时他已下班,在征得客户同意后他先回公司拿了电脑,这才导致迟到。 如此被开除
  • WinSCP基于时间的文件下载(WinSCP time based file download)
    问题 我想编写WinSCP脚本来下载一个文件,该文件每天早上4-4:30am之间放置到远程服务器上。 有没有办法通过时间戳进行此操作? 我想伪代码: get file.txt where timestap<1 hour from 4 am 回答1 首先,我假设您的文件没有固定名称(与您使用固定名称file.txt问题相反)。 如果没有,请解释一下,为什么需要基于时间戳的解决方案。 无论如何,您可以使用具有时间限制的文件掩码: get "*.txt>2014-07-19 4:00" 要动态注入今天的日期,请使用%TIMESTAMP%语法: get "*.txt>%TIMESTAMP#yyyy-mm-ss% 4:00" 简而言之,上述方法意味着在今天4:00之后创建所有文件( %TIMESTAMP#yyyy-mm-ss%根据时间限制,以yyyy-mm-ss格式解析为当前日期)。 在批处理文件中传递WinSCP命令行上的get时(使用/command开关,与使用/script开关指定单独的脚本文件相反),您必须将%加倍,以避免批处理文件试图解释%TIMESTAMP% : winscp.com /command ... "get ""*.txt>%%TIMESTAMP#yyyy-mm-ss%% 4:00""" 另一个解决方案是依赖于相对时间的静态脚本:例如,您知道您的脚本在上午6点运行。
  • 将Javascript日期对象转换为PST时区(Convert Javascript Date object to PST time zone)
    问题 我需要从日历中选择一个未来的日期,假设我选择的日期是10/14/2014 ,现在我想要的是将日期和时间一起发送到服务器,以便在服务器端它总是达到上午6点。 PST时区和日期格式应为UTC。 我正在做的是 targetDate = new Date($("#calendar").val()); targetDate = targetDate.toUTCString(); targetDate = targetDate.addHours(14); 我的理解是,太平洋标准时间(PST)时区为-8:00,因此我为UTC时间增加了14小时,因此时间变为太平洋标准时间(PST)上午6:00 我面临的问题是,由于该对象已被转换为字符串,因此不允许我增加14个小时。 addHours是自定义函数,我必须在给定的时间内添加小时数。 如果我写 targetDate = new Date($("#calendar").val()); targetDate = targetDate.addHours(14); targetDate = targetDate.toUTCString(); 那么效果很好,但是在这种情况下,问题是来自不同时区的请求的时间总是不同的。 任何帮助表示赞赏。 回答1 建议您查看DateJS http://code.google.com/p/datejs/或http://www
  • 如何正确跨时区转换时间?(How to convert time correctly across timezones?)
    问题 假设某位用户在美国CA,则选择了日期,时间和时区: 全球啤酒马拉松赛于2013年8月15日UTC-08:00上午10:00开始 中欧的另一个用户打开显示该日期和时间的页面。 他不想做时间计算(已经很少喝啤酒了)。 他只想看看这个日期和时间: 2013年8月15日19:00 给定浏览器接收到的日期和时间信息,如用户在加利福尼亚州输入的: 在没有外部Web服务的javascript中,有没有一种方法可以进行正确的转换? 也就是说,由于夏令时,检测到上午10点UTC-08:00实际上应该是上午10点UTC-07:00。 也许我从一开始就对此有错误的理解,但是我不想让进入的用户思考他应该选择UTC-08:00(PST)还是UTC-07:00(PDT)。 我假设由于CA中的标准时区是PST,所以人们在夏季不会选择使用PDT进行思考。 还是他们? 在中欧,标准日期为UTC + 01:00,夏令时为UTC + 02:00。 因此,CA和欧洲之间的差异应为9个小时,但一年中的两个时段除外,这时一个区域或另一个区域在标准和夏令时模式之间切换。 更新: 经过更多的思考和阅读评论,我理想上需要的是: var utcOffset = f('2013-08-15T10:00', 'America/Los_Angeles'); // utcOffset == "-07:00" var utcOffset
  • Quartz 的API , Jobs 和Triggers
    项目地址: https://github.com/yuleiqq/quartz_example/tree/master/quartz_study Quartz 一些关键接口的API 如下: Scheduler : 主要用来交互调度器的api Job : 希望由调度器执行的组件实现的接口,比如上篇博客当中的HelloJob.java 。用户定义具体执行的任务. JobDetail :用来定义Job的实例 Trigger : 一个组件,用来定义一个Job 如何 被调度器执行. JobBuilder : 用于定义/构建JobDetail实例,该实例定义作业的实例 TriggerBuilder : 用于定义/构建触发器实例 通过SchedulerFactory和调用它的shutdown()方法,调度器的生命周期受到它的创建的限制。一旦创建了调度器接口,就可以使用它添加、删除和列出作业和触发器,以及执行其他与调度器相关的操作(例如暂停触发器)。然而,直到使用start()方法启动调度程序之前,它不会实际操作任何触发器(执行作业)。 Quartz提供了Domain Specific Language 表示法(即点(.) 方法调用)(或DSL,有时也称为“连贯接口”)的“builder”类。在上篇博客当中已经看到了. 下面来看下代码,里面包含了注释,就不细讲了。 对代码有疑问的