当前位置: 首页 > 知识库问答 >
问题:

如何在Java中获取自定义日期和时间的纪元?

东门仲卿
2023-03-14
Calendar now = Calendar.getInstance();
        int year = now.get(Calendar.YEAR);
        int month=now.get(Calendar.MONTH)+1;
        int date=now.get(Calendar.DATE);
        String yearInString = String.valueOf(year);
        String monthInString=String.valueOf(month);
        if(monthInString.length()==1){
            monthInString="0"+monthInString;
        }
        String dateInString=String.valueOf(date);
        if(dateInString.length()==1){
            dateInString="0"+dateInString;
        }
        int hour=now.get(Calendar.HOUR);
        String hourInString=String.valueOf(hour);
        int minute=now.get(Calendar.MINUTE);
        String minuteInString=String.valueOf(minute);
        if(minuteInString.length()==1){
            minuteInString="0"+minuteInString;
        }
        int second=now.get(Calendar.SECOND);
        String secondInString=String.valueOf(second);
        String HRD=yearInString+"-"+monthInString+"-"+dateInString+" "+hourInString+":"+minuteInString+":"+secondInString;
        System.out.println(HRD);
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss.SSS");
        LocalDateTime dt = LocalDateTime.parse(HRD, dtf);
        Instant instant = dt.toInstant(ZoneOffset.UTC);
        System.out.println(instant.toEpochMilli());
Date date1 = dateFormat.parse(HRD);
long epoch = date1.getTime();
System.out.println(epoch);

但显示错误

线程“main”java.time.format.dateTimeParseException:Text'2021-10-06 0:29:43“无法在索引11处解析,位于java.base/java.time.format.dateTimeFormatter.parseresolved0(DateTimeFormatter.java:2052),java.base/java.time.format.dateTimeFormatter.parse(DateTimeFormatter.java:1954),java.base/java.time.localDateTime.parse(

共有1个答案

孙光临
2023-03-14

java.utilDate-Time API已经过时并且容易出错。建议完全停止使用它,并切换到现代日期时间API*

使用java.time解决方案,现代的日期-时间API:从下午12点的offsetdatetime中,您可以使用offsetdatetime#toinstant获得相应的instant,并且从这个instant,您可以获得纪元毫秒。

演示:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.temporal.TemporalAdjusters;

public class Main {
    public static void main(String[] args) {
        OffsetDateTime todayAtNoon = OffsetDateTime.of(LocalDate.now(ZoneOffset.UTC), LocalTime.NOON, ZoneOffset.UTC);
        OffsetDateTime lastDateOfMonth = todayAtNoon.with(TemporalAdjusters.lastDayOfMonth());
        for (OffsetDateTime odt = todayAtNoon; !odt.isAfter(lastDateOfMonth); odt = odt.plusDays(1)) {
            System.out.println(odt.toInstant().toEpochMilli());
        }
    }
}
1633521600000
1633608000000
1633694400000
...
 类似资料:
  • 问题内容: 你如何做相反,你把时间+日期,并获得秒数? 我有类似的字符串,并且我想获取从纪元到2009年7月9日之间的秒数。 我已经尝试过,但是我不知道如何正确使用它,或者它是否是正确的命令。 问题答案: 如果您是由于搜索引擎告诉您这是获取Unix时间戳的方法而到达此处的,请停止阅读此答案。向下滚动一个。 如果想扭转,那就想。 您可以使用将字符串转换为时间元组,该时间元组将返回一个时间元组,您可以

  • 问题内容: 是否可以在手动查询中使用诸如DATETIME之类的值或命令来插入当前日期和时间? 末尾引用的DATETIME值是我要添加当前日期和时间的位置。 问题答案: 您可以使用:

  • 问题内容: 如何使用Java获取当前日期和时间? 我正在寻找与C#等效的东西。 问题答案: 只需构造一个没有任何参数的新对象即可;这会将当前日期和时间分配给新对象。 在的话的Javadoc的无参数的构造函数: 分配一个Date对象并对其进行 初始化,以便它表示分配它的时间( 以最近的毫秒为单位)。 确保您使用的不是-后者没有零参数构造函数,并且语义有所不同,这是完全不同的对话的主题。:)

  • 本文向大家介绍java如何获取两个日期的时间差,包括了java如何获取两个日期的时间差的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java如何获取两个日期的时间差,供大家参考,具体内容如下 rainBeginTime是从本地数据库获取的时间,格式为”yyyy-MM-ddTHH:mm:ss“。 主要逻辑: 其中MyDateUtil.java: 更多关于java时间操作的文章,请点击

  • 问题内容: 要插入到列中。我正在使用 数据库。我的问题是: SQL中有可用的功能吗?或者 它取决于实现,因此每个数据库对此都有自己的功能? MySQL中可用的功能是什么? 问题答案: 完整答案: 1. SQL中有可用的功能吗? 是的,SQL 92规范,97年10月,第pg。171第6.16节指定了以下功能: 2.它是依赖于实现的,因此每个数据库对此都有自己的功能吗? 每个数据库都有其自己的实现,但

  • 问题内容: 我想要一个开始日期和结束日期之间的日期列表。 结果应为所有日期的列表,包括开始日期和结束日期。 问题答案: 一次添加一天直到达到结束日期: 实现自己的迭代器也可以做到这一点并不难,那就更好了。