我经常遇到关于Java Date
和其他与日期时间相关的类的负面反馈.作为一名.NET开发人员,我不能完全(没有使用它们)了解它们实际上有什么问题.
任何人都可以对此有所了解吗?
我对Date类的Java API感到困惑.所有内容似乎都已弃用,并且链接到Calendar类.所以我开始使用Calendar对象做我想用Date做的事情,但直觉上当我真正想要做的就是创建和比较两个日期时,使用Calendar对象会让我感到困扰.
有一个简单的方法吗?现在我做
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(0);
cal.set(year, month, day, hour, minute, second);
Date date = cal.getTime(); // get back a Date object
Run Code Online (Sandbox Code Playgroud) 我正在做一些报告,我想获取特定月份的所有日期,例如 2014 年 1 月,当我执行此“SQL”时:
SELECT datesInMonth WHERE month = 1 AND year = 2014;
Run Code Online (Sandbox Code Playgroud)
我想得到这个列表:
2014-01-01
2014-01-02
2014-01-03
...
2014-01-31
Run Code Online (Sandbox Code Playgroud)
如果我这样做'SQL':
SELECT datesInMonth WHERE month = 2 AND year = 2014;
Run Code Online (Sandbox Code Playgroud)
我想得到这个列表:
2014-02-01
2014-02-02
2014-02-03
...
2014-02-28
Run Code Online (Sandbox Code Playgroud)
如果我这样做'SQL':
SELECT datesInMonth WHERE month = 2 AND year = 2016;
Run Code Online (Sandbox Code Playgroud)
我想得到这个列表:
2016-02-01
2016-02-02
2016-02-03
...
2016-02-29
Run Code Online (Sandbox Code Playgroud)
这可能吗,或者我应该用我自己的表格来列出未来 100 年的日期:)
我正在处理卡的到期日期.我有一个API,我将以" yyMM "格式将截止日期作为" 字符串 ".我在这里尝试使用
带有TimeZone.getTimeZone的SimpleDateFormat("UTC")
所以我的代码就像
String a= "2011";
SimpleDateFormat formatter = new SimpleDateFormat("yyMM");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(a);
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
现在问题是,当我通过2011年时,它给出的是 Sat Oct 31 17:00:00 PDT 2020
在这里你可以看到我正在通过11个月,但它将它转换为10月而不是11月.
为什么?
还有什么其他选项可以用来将字符串转换yyMM
为Date with Timezone?