如何从Android中选定的日期月份和年份获取星期名称?

时间:2018-04-09 04:21:20

标签: java android date android-datepicker dayofweek

我尝试了下面的代码,但它给了我两天前一周的日期名称。

  DatePicker picker;
  int date = picker.DayOfMonth;
  int month = (picker.Month + 1);//month is 0 based
  int year = picker.Year;

  SimpleDateFormat simpledateformat = new SimpleDateFormat("EEE");
  Date dt = new Date(year, month, date);

4 个答案:

答案 0 :(得分:3)

首先使用SimpleDateFormat

将您的日期转换为特定的日期格式

使用SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE");获取星期中的日期名称

EEEE - >周中的日期名称

示例代码

 SimpleDateFormat inFormat = new SimpleDateFormat("dd-MM-yyyy");
 try {
       Date myDate = inFormat.parse(date+"-"+month+"-"+year);
       SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE");
       String dayName=simpleDateFormat.format(myDate);
 } catch (ParseException e) {
     e.printStackTrace();
}

答案 1 :(得分:1)

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE", Locale.US); 
String asWeek = dateFormat.format(dt);

答案 2 :(得分:0)

    DateTimeFormatter dayOfWeekFormatter 
            = DateTimeFormatter.ofPattern("EEE", Locale.ENGLISH);
    LocalDate date = LocalDate.of(
            picker.getYear(), picker.getMonth(), picker.getDayOfMonth());
    System.out.println(date.format(dayOfWeekFormatter));

采摘2018-04-09此印刷

  

周一

我正在使用并推荐现代Java日期和时间API java.timeDate类已过时,您使用的是不推荐使用的构造函数。它被弃用了,因为它跨时区不可靠,所以你不应该这样做。 SimpleDateFormat不仅过时,而且也是出了名的麻烦。我建议你完全避免这些课程。现代API可以更好地使用。

您的代码出了什么问题?

除了使用已弃用的Date构造函数和过时的类之外,你还有两个错误:

  1. Date的月份是基于0的(不是DatePicker的月份),所以你需要减去1,而不是加1(或者它们都是0基于? )。
  2. 已弃用的Date构造函数的年份是“基于1900”。当这个类在1990年代被设计时,这似乎是一个好主意:你可以指定95来获得1995年。当你将2018年传递给构造函数时,你会得到3918年。那是对的。 : - (
  3. 问题:我可以在Android上使用java.time吗?

    是的,java.time适用于较旧和较新的Android设备。它只需要至少Java 6

    • 在Java 8及更高版本和更新的Android设备上(来自API级别26,我被告知)现代API内置。
    • 在Java 6和7中获取ThreeTen Backport,新类的后端端口(适用于JSR 310的ThreeTen;请参阅底部的链接)。
    • On(较旧)Android使用Android版的ThreeTen Backport。它被称为ThreeTenABP。并确保使用子包从org.threeten.bp导入日期和时间类。

    链接

答案 3 :(得分:0)

Calendar calendar = Calendar.getInstance(); DateFormat date4= new SimpleDateFormat("EEEE", Locale.getDefault()); String localTime4 = date4.format(calendar.getTime());

简单方法 只需使用