- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下简单的代码来根据时区获取星期几。
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(details.getTimezone()));
String dayOfWeek = new SimpleDateFormat("EEEE").format(calendar.get(Calendar.DAY_OF_WEEK));
此处,details.getTimezone()
返回可接受的值,例如“Asia/Kolkata”,calendar.get(Calendar.DAY_OF_WEEK)
返回正确的值6.
根据顺序,第 6 天应该返回“星期五”,但此函数返回“星期四”。
如果我做错了什么,请告诉我。
另请告知我对 DAY_OF_WEEK = 6 表示星期五的理解是否正确。
最佳答案
java.util
Date-Time API 及其格式化 API SimpleDateFormat
已过时且容易出错。建议完全停止使用并切换到 modern Date-Time API *。
使用现代 API java.time
的解决方案:
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("Asia/Kolkata"));
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEEE", Locale.ENGLISH);
System.out.println(dtf.format(zdt));
}
}
输出:
Friday
了解有关 java.time
的更多信息,modern Date-Time API * 来自 Trail: Date Time 。
使用旧版 API:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) {
Date date = new Date();
DateFormat sdf = new SimpleDateFormat("EEEE", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
System.out.println(sdf.format(date));
}
}
输出:
Friday
* 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用 ThreeTen-Backport它将大多数 java.time 功能向后移植到 Java 6 和 7。如果您正在从事 Android 项目,并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring和 How to use ThreeTenABP in Android Project 。
关于java - SimpleDateFormat ("EEEE") 返回错误的时区星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67741539/
我有以下简单的代码来根据时区获取星期几。 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(details.getTimezo
我有以下简单的代码来根据时区获取星期几。 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(details.getTimezo
我使用 android.text.format.DateFormat 将日期格式化为可读格式,如下所示: android.text.format.DateFormat df = new android
我想以这种格式显示当前日期2012年3月28日星期三,我编写了一个方法来获取这种格式,但它给出了无效的日期值(因为当我运行代码时它给出了1933年9月2日星期六)为什么就是它 ?我的代码有什么错误?
我正在尝试将字符串转换为日期。一个例子是: 2013 年 9 月 4 日星期三下午 5:07 我首先将其转换为:2013 年 9 月 4 日星期三下午 5:07 并使用以下代码: SimpleDate
我在尝试解析字符串值时遇到解析器异常: "Thursday, July 27, 2006 10:10:02 PM PST" 格式化: "EEEE, MMMM d, YYYY h:mm:ss a z"
我在 UITableView 中有一个标题,其日期不同,格式为 dd.MMMM-EEEE。如何根据时间从旧到新对它们进行排序?我应该使用 NSSortDescriptor 吗? 这是我的代码: @sy
我想从 Java 中的 date 获取星期几。为什么这会返回 Friday 而实际上是 Tuesday? new java.text.SimpleDateFormat("EEEE").format
我是一名优秀的程序员,十分优秀!