如何在程序中获取毫秒级系统时间的方法

版权申诉
0 下载量 100 浏览量 更新于2024-11-05 收藏 41KB RAR 举报
资源摘要信息:"本文主要介绍如何在程序中获取毫秒级的系统时间。" 在编程中,获取系统时间是常见的需求,而在某些应用场景中,仅获取秒级时间是不够的,需要精确到毫秒。系统时间的毫秒级别时间戳是指从某一特定纪元(通常是1970年1月1日午夜 UTC)到当前时间所经历的毫秒数。这个时间戳在很多编程语言中都可以被获取到,尽管不同的语言有不同的API或函数来实现这一点。 一些常见的编程语言和它们获取毫秒级系统时间的方法如下: 1. Java: 在Java中,可以使用`System.currentTimeMillis()`方法来获取当前时间的毫秒级时间戳。 ```java long millis = System.currentTimeMillis(); ``` 2. Python: Python提供了`time`模块,其中`time.time()`函数返回当前时间的时间戳,是一个浮点数,表示自纪元以来的秒数。如果需要毫秒,可以乘以1000。 ```python import time milliseconds = int(time.time() * 1000) ``` 3. C/C++: 在C和C++中,可以使用`<chrono>`库或者`<sys/time.h>`头文件中的函数来获取毫秒级时间戳。 ```cpp // 使用C++11的chrono库 #include <chrono> std::chrono::milliseconds ms = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()); ``` 4. JavaScript: JavaScript中可以通过`Date.now()`直接获取当前时间的毫秒级时间戳。 ```javascript var milliseconds = Date.now(); ``` 以上代码段仅提供了简单的示例。在实际应用中,可能需要将获取到的时间戳与特定的逻辑结合使用,如时间的计算、比较或格式化等。 关于给定文件信息中的“压缩包子文件的文件名称列表”所提到的`***.txt`和`MilliSecond`,这两个文件名暗示了文件内容可能与获取系统时间的示例代码或相关资源有关。例如,`MilliSecond`文件可能是一个类名、程序名或库名,与获取毫秒级时间的功能相关;而`***.txt`可能是一个文本文件,包含了某个下载链接或资料列表。由于没有具体的文件内容,我们只能推测文件的作用,无法进一步展开详细分析。 获取系统时间的毫秒级时间戳在很多场合都是必要的,例如: - 为数据库记录添加精确的时间戳。 - 在分布式系统中进行时间同步。 - 记录日志或性能监控数据时获取高精度的时间点。 - 生成基于时间的唯一标识符,如在数据存储系统中。 需要注意的是,获取毫秒级时间戳只是时间管理功能的一部分。在处理时间相关的数据时,还需要考虑时区问题、夏令时调整、跨平台时间兼容性等其他因素,以确保时间数据的准确性和一致性。

为下面每一行代码添加注释:#include "stm32f10x.h" void RCC_Configuration(void) { /* Enable GPIOA, GPIOC and AFIO clocks / RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); / Enable SYSCFG clock / RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; / Configure PA0 pin as input floating / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); / Configure PC13 pin as output push-pull / GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); } void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure / Configure the NVIC Preemption Priority Bits / NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); / Enable the EXTI0 Interrupt / NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void EXTI_Configuration(void) { EXTI_InitTypeDef EXTI_InitStructure; / Configure EXTI Line0 to generate an interrupt on falling edge / EXTI_InitStructure.EXTI_Line = EXTI_Line0; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); / Connect EXTI Line0 to PA0 pin / GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); } void SysTick_Configuration(void) { / Configure SysTick to generate an interrupt every 1ms / if (SysTick_Config(SystemCoreClock / 1000)) { / Capture error / while (1); } } void Delay(__IO uint32_t nTime) { / Wait for nTime millisecond / TimingDelay = nTime; while (TimingDelay != 0); } void TimingDelay_Decrement(void) { if (TimingDelay != 0x00) { TimingDelay--; } } int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Configuration(); EXTI_Configuration(); SysTick_Configuration(); / Infinite loop / while (1) { / Toggle PC13 LED every 500ms / GPIOC->ODR ^= GPIO_Pin_13; Delay(500); } } void EXTI0_IRQHandler(void) { / Check if PA0 button is pressed / if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { / Reset MCU / NVIC_SystemReset(); } / Clear EXTI Line0 pending bit */ EXTI_ClearITPendingBit(EXTI_Line0); }

2023-06-03 上传