字符串未被识别为有效的DateTime。引发例外

时间:2016-01-14 04:49:45

标签: c# asp.net asp.net-mvc datetime

我试图将当前日期转换为指定格式。

DateTime date = DateTime.ParseExact(DateTime.Now.ToString(), "yyyy-MM-dd HH:mm:ss.fff",
                                       CultureInfo.InvariantCulture,
                                       DateTimeStyles.None);

我收到以下例外。

  

字符串未被识别为有效的DateTime。

我当地的TimeZone是(UTC + 10:00)墨尔本。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

您的代码(即使有效)也无济于事。它只是序列化和反序列化日期。我相信你正在寻找这个:

string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");

它不起作用,因为DateTime.Now.ToString()给出一个字符串(我碰巧在同一时区,并且可能与你有相同的文化):

14/01/2016 3:54:01 PM  

格式如下:

dd/MM/yyyy h:mm:ss tt

与您使用的格式不符:yyyy-MM-dd HH:mm:ss.fff

答案 1 :(得分:3)

试试这个:

    DateTime now = DateTime.Now;
    CultureInfo culture = new CultureInfo("en-AU"); //Melbourne
    Thread.CurrentThread.CurrentCulture = culture;
    Console.WriteLine(now.ToString("yyyy-MM-ddTHH:mm:ss.fff"));

修改

在格式中实现日期的更好方法是

     @Override
            public View getView(final int position, View convertView, ViewGroup parent) {

                option_list = question_list_array.get(position).option_list;
                number_of_options = option_list.size();

                    v_single=convertView;
                    if (v_single == null)
                    {
                        v_single = inflater.inflate(R.layout.single_choice_layout, null);
                        sh = new SingleHolder();
                        sh.single_question_name = (TextView) v_single.findViewById(R.id.single_question_name);
                        sh.single_radiogroup = (RadioGroup) v_single.findViewById(R.id.single_radiogroup);
                        v_single.setTag(sh);
                    }
                    else
                    {
                        sh = (SingleHolder) v_single.getTag();
                    }
                    sh.single_radiogroup.clearCheck();
                    sh.single_radiogroup.removeAllViews();
                    sh.single_question_name.setText(question_list_array.get(position).getQuestion_name());
                    for (int j = 0; j < number_of_options; j++)
                     {
                         RadioButton rb = new RadioButton(context);
                         rb.setId(Integer.parseInt(option_list.get(j).getOption_id()));
                         rb.setText(option_list.get(j).getOption_name());
                         sh.single_radiogroup.addView(rb);
                     }
                   sh.single_radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(RadioGroup group, int checkedId) {

                            for (int n = 0; n < group.getChildCount(); n++)
                            {
                                RadioButton rb = (RadioButton) group.getChildAt(n);
                                if (Integer.parseInt(option_list.get(n).getOption_id())== checkedId)
                                {
                                    k++;
                                    String result = rb.getText().toString();
                                    sr=new SingleResult();
                                    sr.setAns(result);
                                    sr.setQuestion_id(question_list_array.get(k).getQuestion_id());
                                    single_result.add(sr);
                                    Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
                                    return;
                                }
                            }
                        }
                    });
                    v_final=v_single;

     return v_final;          
    }
private   class SingleHolder
    {
        TextView single_question_name;
        RadioGroup single_radiogroup;


    }

<强> IDEONE DEMO