当前位置: 首页 > news >正文

linux timestamp

驱动或应用中获取时间戳的接口。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>

#if 0
#include <linux/ktime.h>
/* 内核驱动中获取时间戳 */
static ktime_t get_kernel_timestamp(void)
{
    ktime_t ktime = ktime_get();        // 获取当前时间
    u64 timestamp = ktime_to_ns(ktime); // 将ktime转换为纳秒时间戳
 
    printk(KERN_INFO "Current timestamp: %llu nanoseconds\n", timestamp);

    return ktime;
}
#endif

int convert_utc_time( unsigned long long utc, char * ptime)
{
    struct tm *tm;
    time_t t = 0;

    if (utc == 0) {
        strncpy(ptime, "no time", 8);
        return -1;
    }
    
    t = utc / 1000 + 8 * 3600;
    tm = gmtime(&t);
    sprintf(ptime, "%04d:%02d:%02d %02d:%02d:%02d.%03d", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
    tm->tm_hour, tm->tm_min, tm->tm_sec, (int)utc%1000);

    printf("utc time for ac debug : [%s]\n", ptime);

    return 0;
}

static unsigned long long  GetSystemClock_ns()
{
    struct timespec time_start, time_end;

    clock_gettime(CLOCK_REALTIME, &time_start);

    return (long long unsigned)time_start.tv_sec * 1000000000 + (long long unsigned)time_start.tv_nsec;
}

static inline struct timeval AC_TIME_COMMON_GetMonotonic()
{
    struct timespec stTime;
    struct timeval stRet;

    clock_gettime(CLOCK_REALTIME, &stTime);
    
    stRet.tv_sec = stTime.tv_sec - timezone;
    stRet.tv_usec = stTime.tv_nsec/1000;

    return stRet;
}

static unsigned long long GetSystemClock()
{
    struct timeval tv;
    unsigned long long tv_sen;
    unsigned long long gltime;

    gettimeofday(&tv, NULL);

    tv_sen = tv.tv_sec;
    gltime = tv_sen * 1000 + tv.tv_usec / 1000;

    return gltime;
}

int main()
{
    char u_time[32] = {0};
    unsigned long long system_time = 0;

    struct timeval tmData = AC_TIME_COMMON_GetMonotonic();
    system_time = tmData.tv_sec*1000 + tmData.tv_usec / 1000;
    printf("get time %lld\n", system_time);    // 1655445920614 : 2022:06:17 14:05:20.654

    system_time = 0;
    system_time = GetSystemClock();
    printf("get time %lld\n", system_time);    // 1655446828225 : 2022:06:17 14:20:28.265

    system_time = 0;
    system_time = GetSystemClock_ns();      // 1721875113493839086
    printf("get time %lld\n", system_time);

    convert_utc_time(1655356228, u_time);
    convert_utc_time(1823430235, u_time);
    convert_utc_time(1918628771, u_time);

    convert_utc_time(1655445920614, u_time);    // 2022:06:17 14:05:20.654
    convert_utc_time(1655446828225, u_time);    // 2022:06:17 14:20:28.265
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【吊打面试官系列-Dubbo面试题】Dubbo SPI 和 Java SPI 区别?
  • Hive——UDF函数:高德地图API逆地理编码,实现离线解析经纬度转换省市区(离线地址库,非调用高德API)
  • http协议深度解析——网络时代的安全与效率(1)
  • React-Native 宝藏库大揭秘:精选开源项目与实战代码解析
  • SpinalHDL之仿真(一)
  • Java学习Day19:基础篇9
  • 数学基础 -- 隐函数解题思路之微分运算满足线性性
  • Linux初学基本命令
  • Java面试——Tomcat
  • 兴业严选|朝阳优质好房合集 低至6.3折起~
  • ubuntu cmake使用自己版本的qt
  • 如何使用git拉取gitee上面的项目/代码?(超简单)
  • linux常使用的命令
  • AI助力工艺|利用机器学习实现泡沫浮选工艺优化
  • 《C++基础入门与实战进阶》专栏介绍
  • 2019年如何成为全栈工程师?
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Hibernate最全面试题
  • Intervention/image 图片处理扩展包的安装和使用
  • Java读取Properties文件的六种方法
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • jquery ajax学习笔记
  • Phpstorm怎样批量删除空行?
  • Spring Boot快速入门(一):Hello Spring Boot
  • SQLServer之创建数据库快照
  • 搭建gitbook 和 访问权限认证
  • 关于Flux,Vuex,Redux的思考
  • 开源SQL-on-Hadoop系统一览
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小试R空间处理新库sf
  • 异常机制详解
  • Android开发者必备:推荐一款助力开发的开源APP
  • puppet连载22:define用法
  • Semaphore
  • #162 (Div. 2)
  • #数据结构 笔记三
  • (JS基础)String 类型
  • (k8s中)docker netty OOM问题记录
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)nsfocus-绿盟科技笔试题目
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET NPOI导出Excel详解
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 的字符串暂存池
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .Net的DataSet直接与SQL2005交互
  • .NET框架
  • @Transient注解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)