/**
  * Create a new time dataItem from a specified Julian Day number,
  * calendar model, presicion.
  *
  * @param double $jdValue
  * @param integer|null $calendarmodel
  * @param integer|null $precision
  *
  * @return DITime object
  */
 public static function newFromJD($jdValue, $calendarModel = null, $precision = null, $timezone = false)
 {
     $hour = $minute = $second = false;
     $year = $month = $day = false;
     if ($precision === null) {
         $precision = strpos(strval($jdValue), '.5') !== false ? self::PREC_YMD : self::PREC_YMDT;
     }
     list($calendarModel, $year, $month, $day) = JulianDay::JD2Date($jdValue, $calendarModel);
     if ($precision <= self::PREC_YM) {
         $day = false;
         if ($precision === self::PREC_Y) {
             $month = false;
         }
     }
     if ($precision === self::PREC_YMDT) {
         list($hour, $minute, $second) = JulianDay::JD2Time($jdValue);
     }
     return new self($calendarModel, $year, $month, $day, $hour, $minute, $second, $timezone);
 }
 /**
  * @dataProvider valueProvider
  */
 public function testConvert($calendarModel, $seralization, $jdValue)
 {
     list($year, $month, $day, $hour, $minute, $second) = explode('/', $seralization);
     $this->assertEquals($jdValue, JulianDay::getJD($calendarModel, $year, $month, $day, $hour, $minute, $second));
 }