Timer实现指定整点时间触发、指定间隔触发

需求:每分钟循环一次,必须在00秒触发!

两个Timer实现:

timer用来计算距离第一个00秒 的差值 timer只触发一次 autoreset=false;

timer用来60秒一循环


namespace ConsoleApplication1
{
    class Program
    {
        private static System.Timers.Timer aTimer;
        private static System.Timers.Timer aTimer1;

        public static void Main()
        {
          
            Console.WriteLine("atimer开始时间"+DateTime.Now);
            aTimer = new System.Timers.Timer((60-DateTime.Now.Second)*1000);
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Enabled =true;
            aTimer.AutoReset = false;         
           


            Console.WriteLine("按Enter结束程序.");
            Console.ReadLine();
          
        }

       
        private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
            Console.WriteLine("atimer1开始时间" + DateTime.Now);
            aTimer1 = new System.Timers.Timer(60000);
            aTimer1.Elapsed += new ElapsedEventHandler(OnTimedEvent1);
            aTimer1.Enabled = true;
        }
        private static void OnTimedEvent1(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
        }
    }
}



在Qt中实现可调时钟和整点报时可以通过以下步骤进行: 1. 创建一个Qt应用程序,并添加一个QLabel控件用于显示时间。 2. 使用QTimer类来定时更新时间,并将其连接到一个槽函数。 3. 在槽函数中获取当前时间,并将其显示在QLabel控件中。 4. 使用QMediaPlayer类来播放整点报时的音频文件。 5. 在每个整点时刻,触发播放音频的操作。 下面是一个简单的示例代码: ```cpp #include <QtWidgets> #include <QMediaPlayer> class ClockWidget : public QWidget { Q_OBJECT public: ClockWidget(QWidget *parent = nullptr) : QWidget(parent) { // 创建显示时间的标签 timeLabel = new QLabel(this); timeLabel->setAlignment(Qt::AlignCenter); timeLabel->setFont(QFont("Arial", 24)); // 创建定时器 QTimer *timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &ClockWidget::updateTime); timer->start(1000); // 每秒更新一次时间 // 创建媒体播放器 mediaPlayer = new QMediaPlayer(this); // 设置布局 QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(timeLabel); setLayout(layout); } private slots: void updateTime() { // 获取当前时间 QDateTime currentTime = QDateTime::currentDateTime(); QString timeString = currentTime.toString("hh:mm:ss"); // 显示时间 timeLabel->setText(timeString); // 整点报时 if (currentTime.time().minute() == 0 && currentTime.time().second() == 0) { playChimeSound(); } } void playChimeSound() { // 播放整点报时的音频文件 mediaPlayer->setMedia(QUrl::fromLocalFile("chime.wav")); mediaPlayer->play(); } private: QLabel *timeLabel; QMediaPlayer *mediaPlayer; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); ClockWidget clockWidget; clockWidget.show(); return app.exec(); } ``` 这个示例代码创建了一个可调时钟的Qt应用程序,每秒钟更新一次时间,并在整点时刻播放报时音频文件。你可以根据自己的需求修改代码和音频文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值