首页 > 解决方案 > Java 函数类似于 C mktime()?

问题描述

我正在将一些代码从 C 移植到 Java。我在C中有如下一行:

time_t t0 = mktime(&EpochTime); 

其中 EpochTime 定义为:

struct tm EpochTime;

并且struct tm定义为:

struct tm {
        int tm_sec;     /* seconds after the minute - [0,59] */
        int tm_min;     /* minutes after the hour - [0,59] */
        int tm_hour;    /* hours since midnight - [0,23] */
        int tm_mday;    /* day of the month - [1,31] */
        int tm_mon;     /* months since January - [0,11] */
        int tm_year;    /* years since 1900 */
        int tm_wday;    /* days since Sunday - [0,6] */
        int tm_yday;    /* days since January 1 - [0,365] */
        int tm_isdst;   /* daylight savings time flag */
        };

C库函数根据本地时区time_t mktime(struct tm *timeptr)将指向的结构体转换timeptr为值。time_t

在我的 Java 代码中,我可以创建静态类变​​量以及 setter/getter 来表示结构数据。是否有一个库/技术可以让我实现该mktime()功能的设计目的?

标签: java

解决方案


使用ZonedDateTime

ZoneId zone = ZoneId.systemDefault();
ZonedDateTime dateTime = ZonedDateTime.of(
    year + 1900,
    month + 1,
    dayOfMonth,
    hours,
    minutes,
    seconds,
    0,          // nanoseconds within second
    zone);

long t = dateTime.toEpochSecond();
DayOfWeek wday = dateTime.getDayOfWeek();
int yday = dateTime.getDayOfYear();

推荐阅读