繁体   English   中英

如何在Java中将日历设置为特定日期和时间

[英]How to set Calender to Particular date and time in java

我正在使用Java的Calender类..这里将日历设置为星期几和时间。现在根据我的需要,我想将它设置为月份和时间的日期,例如应该将日历设置为月份的第10个,时间应该设置为上午10点。但是我没办法..

这是我的代码。

Calendar date = Calendar.getInstance();
    date.set(
            Calendar.DAY_OF_WEEK,
            Calendar.TUESDAY);
    date.set(Calendar.HOUR, 10);
    date.set(Calendar.MINUTE, 58);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);

请帮助我..预先感谢..

如果要设置月份的日期,则可以互换使用二者之一。

date.set(Calendar.DAY_OF_MONTH, 10); // Synonym of DATE
date.set(Calendar.DATE, 10); // Synonym of DAY_OF_MONTH

您的代码有效,唯一的不同是您的设置日期。 但是一天中的哪一周呢?

下面的代码演示如何设置日历的日期和时间。

Calendar date = Calendar.getInstance();
    long today = date.getTimeInMillis();
    date.set(
            Calendar.DATE,11);
    date.set(Calendar.HOUR, 10);
    date.set(Calendar.MINUTE, 58);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
    date.set(Calendar.MONTH, 10);
    date.set(Calendar.YEAR, 2013);
    date.setTimeZone(TimeZone.getDefault());

    long lastday = date.getTimeInMillis();
    System.out.println(date.getTimeInMillis());

    long diff = today - lastday;
    diff = ((diff/1000)/360);
    System.out.println("Hours diff :"+diff);

tl; dr

ZonedDateTime.of( 2016 , 9 , 10 , 10 , 0 , 0 , 0 , ZoneId.of( "Europe/Paris" ) )

细节

Ɍ.Ɉ接受的答案是正确的。

java.time

这是执行相同操作的方法,但是使用现代的java.time类代替了麻烦的旧旧日期时间类。

http://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html类表示特定时区中时间轴上的时刻,分辨率为纳秒 用所有特定的年,月,时等参数实例化: of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone)

ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = ZonedDateTime.of( 2016 , 9 , 10 , 10 , 0 , 0 , 0 , z );

请参阅标准ISO 8601格式的该值的字符串表示形式,该表示形式通过在方括号中附加时区名称来扩展。

String output = zdt.toString();

2016-09-10T10:00:00 + 02:00 [欧洲/巴黎]

如果要以其他格式生成字符串,请在Stack Overflow中搜索DateTimeFormatter

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧日期时间类,例如java.util.Date.Calendarjava.text.SimpleDateFormat

现在处于维护模式Joda-Time项目建议迁移到java.time。

要了解更多信息,请参见Oracle教程 并在Stack Overflow中搜索许多示例和说明。

大部分的java.time功能后移植到Java 6和7 ThreeTen,反向移植 ,并进一步适应的AndroidThreeTenABP (见如何使用...... )。

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如IntervalYearWeekYearQuarter等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM