- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我制作了一个函数,它可以很好地处理 32 位日期(strtotime 可以接受),但它不可扩展。我需要随机生成人们的出生日期,所以我必须使用 DateTime(而且只有 <=5.2.13,让它变得更加困难)函数来生成它们。
这是我得到的:
public static function randomDate($start_date, $end_date, $format = DateTimeHelper::DATE_FORMAT_SQL_DATE)
{
if($start_date instanceof DateTime) $start_date = $start_date->format(DateTimeHelper::DATE_FORMAT_YMDHMS);
if($end_date instanceof DateTime) $end_date = $end_date->format(DateTimeHelper::DATE_FORMAT_YMDHMS);
// Convert timetamps to millis
$min = strtotime($start_date);
$max = strtotime($end_date);
// Generate random number using above bounds
$val = rand($min, $max);
// Convert back to desired date format
return date($format, $val);
}
那么现在,我如何在两个 DateTime 之间生成一个随机日期?
谢谢!
最佳答案
编辑:根据评论修复错误。
假设您有开始日期和结束日期的详细信息,比如说 getdate() 返回的内容,那么您可以生成一个日期而无需耗时戳:
$year = rand($start_details['year'], $end_details['year']);
$isleap = $year % 400 == 0 || ($year % 100 != 0 && $year % 4);
$min_yday = $year > $start_details['year'] ? 0 : $start_details['yday'];
$max_yday = $year == $end_details['year'] ? $end_details['yday'] : ($isleap ? 365 : 364);
$yday = rand($min_yday, $max_yday);
$sec_in_day = 24 * 60 * 60;
$date_details = getdate($yday * $sec_in_day + ($isleap ? 2 * 365 * $sec_in_day : 0));
return sprintf('%04d-%02d-%02d', $year, $date_details['mon'], $date_details['mday']);
类似的东西(我没有测试)。上面的代码假定为 UTC,您可能希望根据您的时区进行偏移。5
关于PHP:如何创建 randomDate($startDate, $endDate) 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284138/
我正在使用predicateForEventsWithStartDate:endDate:calendars查找在给定的24小时内发生的所有事件。我希望当天发生任何 Activity 的所有 Acti
数据来自 Google Sheets API,因此 employees.stratdate、employees.enddate 等。 我需要能够仅显示过去在选定月份工作的员工。如果他们不再工作,但曾经
我有这个 Bootstrap 日期选择器配置: datePickerConfig: { changeMonth: true, numberOfMonths: 1, endDat
我需要对 StartDate 和 EndDate 进行验证 验证: StartDate 的设置值必须小于或等于 Endate。 EndDate 必须设置为大于或等于 startdate。 到目前为止我
我的数据库中有以下行。 profileID | startDate | endDate -------------------|-----------
有人可以告诉我这个查询中缺少什么吗?它不断出现: Error 1067: invalid default value for EndDate CREATE TABLE `course_info`( `
我有一个类模块,其中包含 private LocalDate startDate; private LocalDate endDate; private Map worked
当我将约会插入到 Exchange 中时,出现以下问题“EndDate 早于 StartDate”,有人可以帮忙解决这个问题吗? Appointment appt=new Appointment();
如何使用 linq 或 lambda 表达式获取开始日期和结束日期之间的日期列表。 DateTime StartDate = DateTime.Now; DateTime EndDate = Date
我正在努力进行日期计算来定义我自己的条形图系列范围。 我的动态日期是时间戳参数“timestamp1”、“timestamp2”、“timestamp3”、“timestamp4”,而我想创建间隔 i
我一直在编写一个脚本来获取一些证书的详细信息,而不是我已经在解决格式问题的过程中得到了格式化,现在当我尝试解析 EndDate="openssl s_client 时,脚本挂起-connect $ho
我有日期数组,我只需要获取介于两个不同日期(StartDate 和 EndDate)之间的那些日期。 谁能帮我解决这个问题... 提前致谢 最佳答案 假设您有 startDate 和 endDate
我制作了一个函数,它可以很好地处理 32 位日期(strtotime 可以接受),但它不可扩展。我需要随机生成人们的出生日期,所以我必须使用 DateTime(而且只有 format(DateTime
这个问题在这里已经有了答案: How do I loop through a date range? (17 个答案) 关闭 6 年前。 我有一个 DateTime StartDate 和 EndD
我想根据选项表单中选择的值动态设置 Bootstrap 日期选择器的 startDate 和 endDate 。 因此,如果我在选项中选择了 Boby,那么日期选择器将设置 startDate = 2
我在该命令的 enddate 输出中获得了额外的空间: $ export IP=google.com; nc -z -w 3 $IP 443 && (echo | openssl s_client
我有两个 LocalDate 声明如下: val startDate = LocalDate.of(2019, 10, 31) // 2019-10-31 val endDate = LocalDa
如何将 UK endDate 转换为 UTC,以便与 Node 上的 UTC 当前时间 (nowTime) 进行比较?还是换一种方式更好?将当前 UTC 时间转换为伦敦时区,然后与英国 endDate
在我的日期分页器中,我可以调用选定的日期并且它正在工作,但 startDate 和 endDate 不起作用。 我正在使用这个库 http://jondmiles.com/bootstrap-date
在我的数据库中有两列和如下数据 StartDate Enddate 2015-10-01 2015-10-30 2015-10-15 2015-11-15
我是一名优秀的程序员,十分优秀!