2016-08-21 146 views
1

我为我的天气应用程序和此API返回的JSON使用了一个API,它给了我这样的'Date':"date": "2016-08-20"这是字符串类型。但我想像“星期三”那样在屏幕上写下一天。我在网上寻找转换,但我找不到解决方案。任何人都可以解释如何做到这一点。提前致谢。顺便说这是一个android项目。将字符串类型日期更改为日期字符串

+0

没有转换你需要搜索,而是搜索**“解析”** –

+0

Okey我寻找 –

+1

我想这就是你需要的.... https://developer.android.com /reference/java/text/SimpleDateFormat.html – Opiatefuchs

回答

1

你只需要2个SimpleDateFormat TER值,

  1. 一个解析当前日期的String价值,并从中得到Date 对象。
  2. 第二次从Date对象得到String的值。

输出

Saturday 

代码

import java.util.*; 
import java.text.*; 

public class HelloWorld { 
    public static void main(String[] args) throws ParseException { 
     Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2016-08-20"); 
     String dayOfWeek = new SimpleDateFormat("EEEEE").format(date); 
     System.out.println(dayOfWeek); 
    } 
} 

或 - 一种线路代码 - 如果我们忽略可读性

import java.util.*; 
import java.text.*; 

public class HelloWorld { 
    public static void main(String[] args) throws ParseException { 
     System.out.println(new SimpleDateFormat("EEEEE").format(new SimpleDateFormat("yyyy-MM-dd").parse("2016-08-20"))); 
    } 
} 
+0

谢谢,效果很好。 –

+0

@AhmetUrun很高兴它的工作。请参阅编辑的答案。我通过不使用额外的'Calendar'对象来优化它。 –

0

这可能帮助,

String weekDay = ""; 
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
     Calendar cal = Calendar.getInstance(); 
     cal.setTime(df.parse(yourDateAsStringHere)); 
     int dayOfWeek= cal.get(Calendar.DAY_OF_WEEK); 

      if (Calendar.MONDAY == dayOfWeek) { 
       weekDay = "monday"; 
      } else if (Calendar.TUESDAY == dayOfWeek) { 
       weekDay = "tuesday"; 
      } else if (Calendar.WEDNESDAY == dayOfWeek) { 
       weekDay = "wednesday"; 
      } else if (Calendar.THURSDAY == dayOfWeek) { 
       weekDay = "thursday"; 
      } else if (Calendar.FRIDAY == dayOfWeek) { 
       weekDay = "friday"; 
      } else if (Calendar.SATURDAY == dayOfWeek) { 
       weekDay = "saturday"; 
      } else if (Calendar.SUNDAY == dayOfWeek) { 
       weekDay = "sunday"; 
      } 
+0

这不会编译,并且它是编写新的SimpleDateFormat(“EEEE”)。格式(新的SimpleDateFormat(“yyyy-MM-dd”)。parse(“ 2016年8月20" 日))'。 – Andreas

0

使用SimpleDateFormat类,例如:

try { 
      String inputStr = "2016-08-20"; 
      Date inputDate = new SimpleDateFormat("yyyy-MM-dd").parse(inputStr); 
      String dayName = new SimpleDateFormat("EEEE").format(inputDate); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
1

您可以使用拆分来标记字符串,但我更喜欢使用日期格式,因为它是做一个标准的方法过程:

String dateString ="2016-08-20"; 
SimpleDateFormat formatInput = new SimpleDateFormat("yyyy-MM-dd"); 
Date date = formatInput.parse(dateString); 
SimpleDateFormat formatOutput = new SimpleDateFormat("EEEE"); 
String day = formatOutput.format(date); 

这个想法是创建一个Date实例从字符串2016-08-20中的日期开始,然后从Date实例将其格式化为星期几。