java中如何获取日期时间中的星期几?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何获取日期时间中的星期几?相关的知识,希望对你有一定的参考价值。

不建议用date的

1、取得指定日期是星期几
取得指定日期是星期几可以采用下面两种方式取得日期是星期几:
a、使用Calendar类
//根据日期取得星期几
public static String getWeek(Date date)
String[] weeks = "星期日","星期一","星期二","星期三","星期四","星期五","星期六";
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index<0)
week_index = 0;

return weeks[week_index];

b、使用SimpleDateFormat类
//根据日期取得星期几
public static String getWeek(Date date)
SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
String week = sdf.format(date);
return week;

注:格式化字符串存在区分大小写
对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“十一月”;MM代表月份,如“11”;
yyyy代表年份,如“2010”;dd代表天,如“25”
2、取得日期是某年的第几周
根据日期入得日期是某年的第几周。
//取得日期是某年的第几周
public static int getWeekOfYear(Date date)
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);
return week_of_year;

3、得到某年的某个月有多少天
已知年份和月份,取得该月有多少天。
//取得某个月有多少天
public static int getDaysOfMonth(int year,int month)
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
int days_of_month = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
return days_of_month;

4、取得两个日期之间的相差多少天
已知两个日期,计算它们之间相差多少天。
// 取得两个日期之间的相差多少天
public static long getDaysBetween(Date date0, Date date1)
long daysBetween = (date0.getTime() - date1.getTime() + 1000000) / 86400000;// 86400000=3600*24*1000 用立即数,减少乘法计算的开销
return daysBetween;
参考技术A 这个只能自己编写代码,显示样式可以根据自己的喜好设定。
实现此功能有很多方法,下面仅给一个例子,希望对你有帮助。

/** * 获取指定日期是星期几
* 参数为null时表示获取当前日期是星期几
* @param date
* @return
*/
public static String getWeekOfDate(Date date)
String[] weekOfDays = "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六";
Calendar calendar = Calendar.getInstance();
if(date != null)
calendar.setTime(date);

int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;

return weekOfDays[w];


调用方法如下,看你怎么用了

public static void main(String[] args)
//今天是2015-10-19 星期一
String weekOfDate = null; //参数为null时表示获取当前日期是星期几
weekOfDate = getWeekOfDate(null);
System.out.println(weekOfDate);
//输出 星期一

Date date = new Date();
date.setDate(18); //指定日期也可以
weekOfDate = getWeekOfDate(date);
System.out.println(weekOfDate);
//输出 星期日
参考技术B 利用java.util类中的Calendar c=Calendar.getInstance();
这个方法来试试。具体就是 比如要获得年 int year; year=c.get(Calendar.YEAR);
你可以试试,本回答被提问者采纳
参考技术C Calendar cal = Calendar.getInstance();

int weekday = cal.get(Calendar.DAY_OF_WEEK);
参考技术D 我的方法:
Date date = new Date(Calendar.DAY_OF_WEEK);
Calendar cal = new GregorianCalendar();

cal.setTime(date);
cal.get(Calendar.DAY_OF_WEEK);
题主,为什么不用Date?分享一下。

在java中获取日期的星期几的一个字母缩写

【中文标题】在java中获取日期的星期几的一个字母缩写【英文标题】:Get one letter abbreviation of week day of a date in java 【发布时间】:2013-06-02 07:24:28 【问题描述】:

据我所知,在 Java 中,我可以在正常(星期五)或短模式(星期五)下获得工作日。但是,有没有办法只获取第一个字母?

我认为我可以使用“子字符串”来获取第一个字母,但它并不适用于所有语言。例如,西班牙的工作日是:Lunes、Martes、Miércoles、Jueves、Viernes、Sábado 和 Domingo,“Miércoles”的第一个字母是 X 而不是 M,以区别于“Martes”。

【问题讨论】:

嗯,法语和意大利语都有同样的问题,但我从未见过这两种语言中使用过单字母缩写。哎呀,连English都有这个问题。 【参考方案1】:

在 Android 中,您可以将 SimpleDateFormat 与“EEEEE”一起使用。在下一个示例中您可以看到它。

SimpleDateFormat formatLetterDay = new SimpleDateFormat("EEEEE",Locale.getDefault());
String letter = formatLetterDay.format(new Date());

【讨论】:

这在 API 16 上不起作用,它返回全天名称。在 API 18 及更高版本中似乎工作正常。 对于 API 16 或更早版本,DateUtils.getDayOfWeekString(dayOfWeek, DateUtils.LENGTH_SHORTEST) 这里怎么不写:developer.android.com/reference/java/text/SimpleDateFormat.html?【参考方案2】:

如上所述,对此没有标准的 Java 支持。然而,使用格式化字符串“EEEEE”并不能保证在所有 Android 设备上都能正常工作。以下代码保证可以在任何设备上运行:

public String firstLetterOfDayOfTheWeek(Date date) 

    Locale locale = Locale.getDefault(); 
    DateFormat weekdayNameFormat = new SimpleDateFormat("EEE", locale); 
    String weekday = weekdayNameFormat.format(date); 
    return weekday.charAt(0)+""; 

【讨论】:

【参考方案3】:

没有标准的 Java API 支持这样做。

部分原因是许多(甚至可能是大多数)语言没有传统的唯一单字母工作日缩写。例如,在英语中没有 (M T W T F S S)。

在许多/大多数语言环境中不起作用的(假设的)格式选项1将成为国际化的障碍,而不是帮助。


1 - 我的意思是人类意义上的。你可以发明一个约定,但人们不会理解缩写的含义。

【讨论】:

【参考方案4】:

我意识到 OP 要求跨语言制定标准,但这并没有解决这个问题。但是有/曾经有一个使用单字符星期几缩写的标准。

在大型机时代,使用 1 个字符的“星期几”缩写很常见,要么将星期几存储在 1 个字符字段中(以节省宝贵的空间),要么将报告标题用于单字符列。 “标准”是使用 MTWRFSU,其中 R 代表星期四,U 代表星期日。

我找不到任何明确的参考(这就是我引用“标准”的原因,但这里有几个例子: http://eventguide.com/topics/one_digit_day_abbreviations.html http://www.registrar.ucla.edu/soc/definitions.htm#Anchor-Days-3800

【讨论】:

【参考方案5】:

我认为没有直接的 java 函数来获取第一个字母,也没有标准的方法。

可以参考这个链接使用substring() java方法获取字符串day的首字母

Given a string in Java, just take the first X letters

【讨论】:

我不知道第一个字母是否对所有语言都是正确的,因为所描述的问题。 我想您可以根据语言进行自己的映射,即。 Miércoles" 是 X ,而不是 X 显示 M 。但是如果你想支持大量的语言,这将是不可行的。它 我想支持所有语言:)

以上是关于java中如何获取日期时间中的星期几?的主要内容,如果未能解决你的问题,请参考以下文章

如何从sql中的星期和日期中获取日期?

从当前日期获取星期几并指定星期几

如何使用 Google 表格获取与上一年的星期数和星期几相同的日期?

javascript如何获取一个月前的日期并取出星期几

在monthcalendar中如何获取选定日期是星期几

java 获取当前日期是多少周