Example #1
0
 /**
  * @param $dateOfBirth
  * @return \DateTime
  */
 protected function getDateOfBirth($dateOfBirth)
 {
     if (empty($dateOfBirth)) {
         $dateOfBirthParts = array(static::numberBetween(1800, 2099));
     } else {
         $dateOfBirthParts = explode('-', $dateOfBirth);
     }
     $baseDate = \Faker\Provider\DateTime::dateTimeBetween("first day of {$dateOfBirthParts[0]}", "last day of {$dateOfBirthParts[0]}");
     switch (count($dateOfBirthParts)) {
         case 1:
             $dateOfBirthParts[] = $baseDate->format('m');
             //don't break, we need the day also
         //don't break, we need the day also
         case 2:
             $dateOfBirthParts[] = $baseDate->format('d');
             //don't break, next line will
         //don't break, next line will
         case 3:
             break;
         default:
             throw new \InvalidArgumentException("Invalid date of birth - must be null or in the 'Y-m-d', 'Y-m', 'Y' format");
     }
     if ($dateOfBirthParts[0] < 1800 || $dateOfBirthParts[0] > 2099) {
         throw new \InvalidArgumentException("Invalid date of birth - year must be between 1900 and 2099, '{$dateOfBirthParts[0]}' received");
     }
     $dateOfBirthFinal = implode('-', $dateOfBirthParts);
     $date = \DateTime::createFromFormat('Y-m-d', $dateOfBirthFinal);
     //a full (invalid) date might have been supplied, check if it converts
     if ($date->format('Y-m-d') !== $dateOfBirthFinal) {
         throw new \InvalidArgumentException("Invalid date of birth - '{$date->format('Y-m-d')}' generated based on '{$dateOfBirth}' received");
     }
     return $date;
 }
Example #2
0
 /**
  * National Individual Identification Numbers
  *
  * @link   http://egov.kz/wps/portal/!utWCM/p/b1/04_Sj9S1tDAwMzY1NjLTj9CPykssy0xPLMnMz0vMAfGjzOKDvDxNnJwMHQ0sTMOMDBxNPJ2dggNCg13MDIEKIpEVGFiGOIMUuIcFOJkZGxgYE6ffAAdwNCCkP1w_ClUJFheAFeCxws8jPzdVPzcqx83SU9cRADxWbyg!/dl4/d5/L0lDUmlTUSEhL3dHa0FKRnNBLzRKVXFDQSEhL2Vu/
  * @param  \DateTime $birthDate
  * @return string 12 digits, like 780322300455
  */
 public static function individualIdentificationNumber(\DateTime $birthDate = null)
 {
     if (!$birthDate) {
         $birthDate = \Faker\Provider\DateTime::dateTimeBetween();
     }
     $dateAsString = $birthDate->format('ymd');
     $genderAndCenturyId = (string) static::numberBetween(1, 6);
     $randomDigits = (string) static::numerify('#####');
     return $dateAsString . $genderAndCenturyId . $randomDigits;
 }
Example #3
0
 /**
  * @link https://en.wikipedia.org/wiki/National_identification_number#South_Africa
  *
  * @param int    $minAge
  * @param int    $maxAge
  * @param bool   $citizen
  * @param string $gender
  *
  * @return string
  */
 public function idNumber($minAge = 16, $maxAge = 100, $citizen = true, $gender = null)
 {
     switch (strtolower($gender)) {
         case static::GENDER_FEMALE:
             $genderDigit = self::numberBetween(0, 4);
             break;
         case static::GENDER_MALE:
             $genderDigit = self::numberBetween(5, 9);
             break;
         default:
             $genderDigit = rand(0, 9);
     }
     $citizenDigit = $citizen === true ? '0' : '1';
     $birthDateString = DateTime::dateTimeBetween(sprintf('-%d years', $maxAge), sprintf('-%d years', $minAge))->format('ymd');
     $sequenceDigits = str_pad(self::randomNumber(3), 3, 0, STR_PAD_BOTH);
     $raceDigit = self::randomNumber(1);
     $partialIdNumber = $birthDateString . $genderDigit . $sequenceDigits . $citizenDigit . $raceDigit;
     $idNumber = $partialIdNumber . Luhn::computeCheckDigit($partialIdNumber);
     return $idNumber;
 }
 public function testFixedSeedWithMaximumTimestamp()
 {
     $max = '2018-03-01 12:00:00';
     mt_srand(1);
     $unixTime = DateTimeProvider::unixTime($max);
     $datetimeAD = DateTimeProvider::dateTimeAD($max);
     $dateTime1 = DateTimeProvider::dateTime($max);
     $dateTimeBetween = DateTimeProvider::dateTimeBetween('2014-03-01 06:00:00', $max);
     $date = DateTimeProvider::date('Y-m-d', $max);
     $time = DateTimeProvider::time('H:i:s', $max);
     $iso8601 = DateTimeProvider::iso8601($max);
     $dateTimeThisCentury = DateTimeProvider::dateTimeThisCentury($max);
     $dateTimeThisDecade = DateTimeProvider::dateTimeThisDecade($max);
     $dateTimeThisMonth = DateTimeProvider::dateTimeThisMonth($max);
     $amPm = DateTimeProvider::amPm($max);
     $dayOfMonth = DateTimeProvider::dayOfMonth($max);
     $dayOfWeek = DateTimeProvider::dayOfWeek($max);
     $month = DateTimeProvider::month($max);
     $monthName = DateTimeProvider::monthName($max);
     $year = DateTimeProvider::year($max);
     $dateTimeThisYear = DateTimeProvider::dateTimeThisYear($max);
     mt_srand();
     //regenerate Random Date with same seed and same maximum end timestamp
     mt_srand(1);
     $this->assertEquals($unixTime, DateTimeProvider::unixTime($max));
     $this->assertEquals($datetimeAD, DateTimeProvider::dateTimeAD($max));
     $this->assertEquals($dateTime1, DateTimeProvider::dateTime($max));
     $this->assertEquals($dateTimeBetween, DateTimeProvider::dateTimeBetween('2014-03-01 06:00:00', $max));
     $this->assertEquals($date, DateTimeProvider::date('Y-m-d', $max));
     $this->assertEquals($time, DateTimeProvider::time('H:i:s', $max));
     $this->assertEquals($iso8601, DateTimeProvider::iso8601($max));
     $this->assertEquals($dateTimeThisCentury, DateTimeProvider::dateTimeThisCentury($max));
     $this->assertEquals($dateTimeThisDecade, DateTimeProvider::dateTimeThisDecade($max));
     $this->assertEquals($dateTimeThisMonth, DateTimeProvider::dateTimeThisMonth($max));
     $this->assertEquals($amPm, DateTimeProvider::amPm($max));
     $this->assertEquals($dayOfMonth, DateTimeProvider::dayOfMonth($max));
     $this->assertEquals($dayOfWeek, DateTimeProvider::dayOfWeek($max));
     $this->assertEquals($month, DateTimeProvider::month($max));
     $this->assertEquals($monthName, DateTimeProvider::monthName($max));
     $this->assertEquals($year, DateTimeProvider::year($max));
     $this->assertEquals($dateTimeThisYear, DateTimeProvider::dateTimeThisYear($max));
     mt_srand();
 }
Example #5
0
 /**
  * Return a valid company registration number.
  *
  * @return string
  */
 public function companyNumber()
 {
     return sprintf('%s/%s/%s', \Faker\Provider\DateTime::dateTimeBetween('-50 years', 'now')->format('Y'), static::randomNumber(6, true), static::randomElement(static::$legalEntities));
 }