Android:如何在用户的语言中获取当周的星期几(星期一等)?

我想知道用户的本地语言是星期一(星期一,星期二)。 例如,“Lundi”,“Mardi”等…如果用户是法语的话。

我已经阅读这篇文章,但它只返回一个int,而不是用户的语言在一天中的string: 什么是最简单的方法来获取当前在Android的一周的一天?

更一般地说,你如何在一周中的所有日子以及以用户的语言写成的一年中的所有月份?

我认为这是可能的,例如Google的议程就是用用户的当地语言写的日子和月份。

谢谢 !!

使用SimpleDateFormat将date和时间格式化为用户可读的string,相对于用户区域设置。

获取当前星期几的小例子(例如“星期一”)

SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

尝试这个:

 int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek]; 

缩短事情你可以使用这个:

 android.text.format.DateFormat.format("EEEE", date); 

这将作为一个string返回星期几。

她的是我用来取得星期几的名字( 0-6是指monday - sunday ):

 public static String getFullDayName(int day) { Calendar c = Calendar.getInstance(); // date doesn't matter - it has to be a Monday // I new that first August 2011 is one ;-) c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%tA", c); } public static String getShortDayName(int day) { Calendar c = Calendar.getInstance(); c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%ta", c); } 

我知道已经回答了,但是正在寻找“星期五”的人

星期五 –

 SimpleDateFormat sdf = new SimpleDateFormat("EEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

谁想要完整的datestring,他们可以使用4E 星期五

星期五 –

 SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

请享用…

尝试这个…

 //global declaration private TextView timeUpdate; Calendar calendar; ....... timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate() ....... //in onStart() calendar = Calendar.getInstance(); //date format is: "Date-Month-Year Hour:Minutes am/pm" SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time String currentDate = sdf.format(calendar.getTime()); //Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat". SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); Date date = new Date(); String dayName = sdf_.format(date); timeUpdate.setText("" + dayName + " " + currentDate + ""); 

结果是… 在这里输入图像描述

快乐编码…..

TL;博士

 String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ) .getDayOfWeek() .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; 

java.time

Java 8及更高版本中内置的java.time类以及后端移植到Java 6和7以及Android的方法包括方便的DayOfWeek枚举。

date按照ISO 8601标准定义,周一到周日1-7。

 DayOfWeek dow = DayOfWeek.of( 1 ); 

此枚举包含getDisplayName方法,以生成当天的本地化翻译名称的string。

Locale对象指定在翻译中使用的人类语言,并指定文化规范来决定大写和标点符号等问题。

 String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; 

要获取今天的date,请使用LocalDate类。 请注意,时区对于任何时候都是至关重要的,因为date在全球范围内变化。

 ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( z ); DayOfWeek dow = today.getDayOfWeek(); String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; 

请记住,语言环境与时区无关。两个不同的正交问题是分开的。 您可能需要法文在印度( Asia/Kolkata )划定date时间。

乔达时间

更新: Joda-Time项目现在处于维护模式 ,build议迁移到java.time类。

Joda-Time库提供了Locale驱动的date – 时间值的本地化。

 DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ); DateTime now = DateTime.now( zone ); Locale locale = Locale.CANADA_FRENCH; DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale ); String output = formatterUnJourQuébécois.print( now ); System.out.println("output: " + output ); 

输出:samedi


关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧的遗留date时间类,如java.util.DateCalendarSimpleDateFormat

Joda-Time项目现在处于维护模式 ,build议迁移到java.time类。

要了解更多信息,请参阅Oracle教程 。 并search堆栈溢出了很多例子和解释。 规范是JSR 310 。

从何处获取java.time类?

  • Java SE 8SE 9及更高版本
    • 内置。
    • 带有捆绑实现的标准Java API的一部分。
    • Java 9增加了一些小function和修复。
  • Java SE 6SE 7
    • 大部分的java.timefunction都被移植到了ThreeTen-Backport中的 Java 6&7中。
  • Android的
    • ThreeTenABP项目专门针对Android,采用了ThreeTen-Backport (上文提到)。
    • 请参阅如何使用ThreeTenABP …。

对不起,延迟reply.But这将正常工作。

 daytext=(textview)findviewById(R.id.day); Calender c=Calender.getInstance(); SimpleDateFormat sd=new SimpleDateFormat("EEEE"); String dayofweek=sd.format(c.getTime()); daytext.setText(dayofweek);