struct timeval tv;
gettimeofday(&tv, NULL);
tblock_ = localtime(&tv.tv_sec);
- int realMS = tblock_->tm_sec * S_MS_US_TRANS + tv.tv_usec / S_MS_US_TRANS;
+ int realMS = tblock_.tm_sec * S_MS_US_TRANS + tv.tv_usec / S_MS_US_TRANS;
#else
/*优化为更安全的localtime_r()*/
struct timeval tv;
gettimeofday(&tv, NULL);
- struct tm tblock;
- localtime_r(&tv.tv_sec, &tblock);
- tblock_ = &tblock;
- int realMS = tblock.tm_sec * S_MS_US_TRANS + tv.tv_usec / S_MS_US_TRANS;
+ localtime_r(&tv.tv_sec, &tblock_);
+ int realMS = tblock_.tm_sec * S_MS_US_TRANS + tv.tv_usec / S_MS_US_TRANS;
#endif
- angleH_ = ConvertHandValueToAngle(tblock_->tm_hour, HALF_DAY_IN_HOUR, tblock_->tm_min, ONE_HOUR_IN_MINUTE);
- angleM_ = ConvertHandValueToAngle(tblock_->tm_min, ONE_HOUR_IN_MINUTE, tblock_->tm_sec, ONE_MINUTE_IN_SECOND);
- angleS_ = ConvertHandValueToAngle(tblock_->tm_sec, ONE_MINUTE_IN_SECOND, 0, 1);
+ angleH_ = ConvertHandValueToAngle(tblock_.tm_hour, HALF_DAY_IN_HOUR, tblock_.tm_min, ONE_HOUR_IN_MINUTE);
+ angleM_ = ConvertHandValueToAngle(tblock_.tm_min, ONE_HOUR_IN_MINUTE, tblock_.tm_sec, ONE_MINUTE_IN_SECOND);
+ angleS_ = ConvertHandValueToAngle(tblock_.tm_sec, ONE_MINUTE_IN_SECOND, 0, 1);
angleMS_ = ConvertHandSecondValueToAngle(realMS, S_MS_US_TRANS * ONE_MINUTE_IN_SECOND);
}
bool DialModelTime::GetDialFloatData(DialDataType& type, float& out)
{
- if (tblock_ == nullptr) {
- UpdateTime();
- }
+ UpdateTime();
+
switch (type) {
case DialDataType::DATA_TYPE_CLOCK_ANGLE_H:
out = static_cast<float>(angleH_);
out = static_cast<float>(angleMS_);
break;
case DialDataType::DATA_TYPE_TIME_YEAR:
- out = static_cast<float>((tblock_->tm_year) + 1900);
+ out = static_cast<float>((tblock_.tm_year) + 1900);
break;
case DialDataType::DATA_TYPE_TIME_MONTH:
- out = static_cast<float>((tblock_->tm_mon) + 1);
+ out = static_cast<float>((tblock_.tm_mon) + 1);
break;
case DialDataType::DATA_TYPE_TIME_WEEK:
- out = static_cast<float>(tblock_->tm_wday);
+ out = static_cast<float>(tblock_.tm_wday);
break;
case DialDataType::DATA_TYPE_TIME_DATE:
- out = static_cast<float>(tblock_->tm_mday);
+ out = static_cast<float>(tblock_.tm_mday);
break;
case DialDataType::DATA_TYPE_TIME_HOUR:
- out = static_cast<float>(tblock_->tm_hour);
+ out = static_cast<float>(tblock_.tm_hour);
break;
case DialDataType::DATA_TYPE_TIME_MINUTE:
- out = static_cast<float>(tblock_->tm_min);
+ out = static_cast<float>(tblock_.tm_min);
break;
case DialDataType::DATA_TYPE_TIME_SECOND:
- out = static_cast<float>(tblock_->tm_sec);
+ out = static_cast<float>(tblock_.tm_sec);
break;
default:
return false;