标签: java.util.calendar

我是否需要更改日期和时区

我有一个日历对象[localDate],它位于美国东部时间:比如11月6日,15:34 ......我将时区设置为格林尼治标准时间+5:30 ......现在,当我这样做时,Calendar.HOUR_OF_DAY它返回给我2 ...我知道是完美的..从格林威治标准时间15:34 + 5小时到时区+5:30到达时区..这只是意味着26:04这是第7个中的第2个.

然而,日期仍然保持11月6日... localDate.getTime()仍然返回11月6日...甚至当我打印localDate ..它显示时区为+5:30,但是那天和其他一切仍然是原来的本地时间.. [即11月6日]

我根本无法理解为什么......

编辑::

所以我知道我不需要更改日期和时区.只更改显示适合该位置的日期的方式,并且可以使用已设置的时区完成.

java java.util.calendar

2
推荐指数
1
解决办法
599
查看次数

SimpleDateFormat错误地解析字符串

String s = 19.17.38.008000;
DateFormat f = new SimpleDateFormat("HH.mm.ss.SSSSSS");
Date d = f.parse(s);
system.out.println(d);
Run Code Online (Sandbox Code Playgroud)

这是我正在运行的代码运行正常,除非它打印时打印时间为19:17:46.请有人向我解释一下

作为旁注:

String s = 19.17.38.008000;
DateFormat f = new SimpleDateFormat("HH.mm.ss");
Date d = f.parse(s);
system.out.println(d);
Run Code Online (Sandbox Code Playgroud)

此代码将正确打印相同的字符串减去毫秒.有人请告诉我这里缺少什么.

编辑:谢谢你的答案我认为这里的问题是我正在读取38.008000为.008秒,但sdf读取SSS为8000毫秒,这是不一样的.

java simpledateformat java.util.date java.util.calendar

2
推荐指数
1
解决办法
425
查看次数

Java Calendar.DAY_OF_WEEK 给出错误的一天

下面的代码有什么问题?它为一年中的任何日期提供错误的日期。

import java.util.Scanner;
import java.util.Calendar;
public class Solution {
    public static String getDay(String d, String m, String y) {

        String[] days = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
        Calendar c = Calendar.getInstance();
        c.set(Integer.parseInt(y), Integer.parseInt(m), Integer.parseInt(d)); 
        return days[c.get(Calendar.DAY_OF_WEEK) - 1]; 
    }
public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String m = in.next();
        String d = in.next();
        String y = in.next();

        System.out.println(getDay(d, m, y));
    }
}
Run Code Online (Sandbox Code Playgroud)

java date dayofweek java.util.calendar

2
推荐指数
1
解决办法
2754
查看次数

确定给定月份中有多少天

我正在根据给定月份的天数进行一些计算,

确定当前年月

Date date = new Date();
Year = YearFormat.format(date);
Month = MonthFormat.format(date);
Run Code Online (Sandbox Code Playgroud)

确定当月有多少天

int year = Integer.valueOf(Year);
int month = Integer.valueOf(Month);
Calendar calendarD = new GregorianCalendar(year, month, 1);
int noOfDaysOfMonth = calendarD.getActualMaximum(Calendar.DAY_OF_MONTH);
Run Code Online (Sandbox Code Playgroud)

问题

noOfDaysOfMonth 似乎没有给我正确的天数。

例如year = 2018 , month = 8给了我30我期望的31

java java.util.calendar

2
推荐指数
1
解决办法
4215
查看次数

将 java Calendar 对象从本地时间转换为 UTC

如何将 JavaCalendar对象从本地时间转换为 UTC?这是我尝试过的:

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
    calendar.setTime(localDateTime.getTime());
    SimpleDateFormat outputFmt = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
    String dateAsString = outputFmt.format(calendar.getTime());
    System.out.println(dateAsString)
Run Code Online (Sandbox Code Playgroud)

时间始终以 MT 格式显示,而不是 GMT 格式。我想将日历以 UTC 格式存储在数据库中(我不关心格式化或显示时间)。

java datetime utc java.util.calendar

1
推荐指数
1
解决办法
6560
查看次数

如何在当前日期上添加 30 天?

我想在当前日期中添加 30 天,我进行了很多搜索,但没有找到正确的解决方案。

我的代码

 Date date = new Date();
 SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd");
 Calendar c1 = Calendar.getInstance();
 String currentdate = df.format(date);

 try {
     c1.setTime(df.parse(currentdate));
     c1.add(Calendar.DATE, 30);
     df = new SimpleDateFormat("yyyy-MM-dd");
     Date resultdate = new Date(c1.getTimeInMillis());
     String dueudate = df.format(resultdate);
     Toast.makeText(this, dueudate, Toast.LENGTH_SHORT).show();
 } catch (ParseException e) {
     e.printStackTrace();
 }
Run Code Online (Sandbox Code Playgroud)

这段代码的输出是:2019-01-29 我不明白为什么它显示这个输出任何人都可以帮助我。

java android days java.util.calendar

1
推荐指数
1
解决办法
1万
查看次数

java.util.calendar表现得很奇怪

所以,我找到了java.util.Calendar,并尝试将它用于我正在研究的android项目.

我完全不明白Calendar.DAY_OF_WEEK如何在星期四返回7?现在当它是八月Calendar.WEEK_OF_YEAR返回4,这根本没有任何意义!

我也尝试了GregorianCalendar,它给出了完全相同的结果.

试图找到有关它们如何计算的任何文档,但我找不到任何东西.似乎有一些非常明显的东西,但我无法找出它是什么!

我写的代码在这里:

    // Get if daily or weekly
    boolean daily;
    daily = getPrefs.getBoolean("checkbox_daily", false);
    String day = "0";
    if (daily){
        switch(GregorianCalendar.DAY_OF_WEEK){
            case GregorianCalendar.MONDAY:
                Do_stuff();
                break;
            case GregorianCalendar.TUESDAY:
                Do_stuff();
                break;
            case GregorianCalendar.WEDNESDAY:
                Do_stuff();
                break;
            case GregorianCalendar.THURSDAY:
                Do_stuff();
                break;
            case GregorianCalendar.FRIDAY:
                Do_stuff();
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

java calendar date java.util.calendar

0
推荐指数
1
解决办法
162
查看次数

我怎么比较小时?

我正在构建一个应用程序,我需要知道如何比较两个小时.

例如:我的商店开放06:30 am和关闭17:00 pm,我需要在Textview中显示17:00 pm我的商店关闭后,以及06:00 am我的商店开放后,从周一到周五.

我怎样才能做到这一点?

我收到多个错误:

一个在int打开的时候我把06:30用":"

两个星期一到星期五的限制

请在下面找到我的代码:

public void timer () {
        Calendar c = Calendar.getInstance();
        int timeOfDay = c.get(Calendar.HOUR_OF_DAY);
        int open = 6:30; // 1 ERROR HERE WITH ":"
        int close = 17;

        if(timeOfDay < close){
            hour.setText.("OPEN");
        }}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

java time android hour java.util.calendar

0
推荐指数
1
解决办法
1159
查看次数

java.time.ZonedDateTime与java.util.Calendar性能检查

我试图获取月份价值。但我想检查java.util或java.time中哪个更好,以检索月份值。这是我的代码,用于检查Calender vs ZonedDateTime的性能。

    //import java.time.Instant;
    //import java.time.ZonedDateTime;
    //import java.util.Calendar;

    Instant instant, instant2; 
    String diff;

    instant = Instant.now();
    int month2 = Calendar.getInstance().get(Calendar.MONTH) + 1;
    instant2 = Instant.now();
    diff = String.valueOf(instant2.getNano() - instant.getNano());
    System.out.println("month value " + month2 + "at: " + diff);

    instant = Instant.now();
    int month1 = ZonedDateTime.now().getMonth().getValue();
    instant2 = Instant.now();
    diff = String.valueOf(instant2.getNano() - instant.getNano());
    System.out.println("month value " + month1 + "at: " + diff);
Run Code Online (Sandbox Code Playgroud)

我认为java.time比java.util更好。因此,我期望ZonedDateTime比日历更好。但是在这里我发现了相反的情况。我的结果是:

month value 6at: 0  //Calendar
month value 6at: 9000000 //ZonedDateTime
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样。以及为什么我应该使用java.util.Calender而不是java.timeZonedDateTime的任何建议。

PS我什至把在month1之后的month2取回为:

    Instant …
Run Code Online (Sandbox Code Playgroud)

java performance date java.util.calendar zoneddatetime

-1
推荐指数
1
解决办法
98
查看次数

Calendar.DAY_OF_WEEK 和 Calendar.DAY_OF_MONTH 之间有什么区别?每次的输出都是一样的

我正在使用Timestamp当前时间的类来设置时间。Calendar我先用 来DAY_OF_WEEK设置上课时间DAY_OF_MONTH。I\xe2\x80\x99m 每次都得到相同的输出。DAY_OF_MONTH那么和之间有什么区别DAY_OF_WEEK

\n\n
    Timestamp followUpDateBegins = new Timestamp(System.currentTimeMillis());\n\n    Calendar cal = Calendar.getInstance();\n    cal.setTime(followUpDateBegins);\n    cal.add(Calendar.DAY_OF_WEEK, -30);\n    cal.set(Calendar.HOUR, 0);\n    cal.set(Calendar.MINUTE, 0);\n    cal.set(Calendar.SECOND, 0);\n    cal.set(Calendar.MILLISECOND, 0);\n\n    followUpDateBegins.setTime(cal.getTime().getTime());\n    System.out.println("followUpDateBegins      "+followUpDateBegins);\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
    Timestamp followUpDateBeginsSecond = new Timestamp(System.currentTimeMillis());\n\n    cal.setTime(followUpDateBeginsSecond);\n    cal.add(Calendar.DAY_OF_MONTH, -30);\n    cal.set(Calendar.HOUR, 0);\n    cal.set(Calendar.MINUTE, 0);\n    cal.set(Calendar.SECOND, 0);\n    cal.set(Calendar.MILLISECOND, 0);\n\n    followUpDateBeginsSecond.setTime(cal.getTime().getTime());\n    System.out.println("followUpDateBegins" + followUpDateBeginsSecond);\n
Run Code Online (Sandbox Code Playgroud)\n

java date java.util.calendar

-2
推荐指数
1
解决办法
1665
查看次数

为什么 Java 日历对象返回错误的 WEEK_OF_YEAR 和 WEEK_OF_MONTH

通过以下方式,我将日期对象设置为日历实例。 在此处输入图片说明

但是当我得到一年中的第几周时,它错误地将一年中的一周返回为 1。与一年中的一周相同,月中的一周值也错误。它返回 6。但它应该是 5。

以下是日历实例值的输出

java.util.GregorianCalendar[time=1514678400000, 
areFieldsSet=true, 
areAllFieldsSet=true, 
lenient=true, 
zone=sun.util.calendar.ZoneInfo[id="UTC", 
offset=0, dstSavings=0, useDaylight=false, transitions=0, lastRule=null], 
firstDayOfWeek=1, minimalDaysInFirstWeek=1, ERA=1, YEAR=2017, MONTH=11, WEEK_OF_YEAR=1, WEEK_OF_MONTH=6, DAY_OF_MONTH=31, DAY_OF_YEAR=365, DAY_OF_WEEK=1, DAY_OF_WEEK_IN_MONTH=5, AM_PM=0, HOUR=0, HOUR_OF_DAY=0, MINUTE=0, SECOND=0, MILLISECOND=0, ZONE_OFFSET=0, DST_OFFSET=0]
Run Code Online (Sandbox Code Playgroud)

java date week-number java.util.calendar

-2
推荐指数
1
解决办法
1527
查看次数