> > The bug you want me to submit certainly
> > immediately breaks the documentation. Not necessarily a deal breaker,
> > documentation can be changed...
> 
> You're right that the code and the documentation are aligned. I'm saying that 
> I
> want to change the behaviour, since we did the exact same change for QString
> and QByteArray for 5.0.

Yep, I get that you want to change the behavior. I just don't agree that the 
proposed behavior is better!

One spot where I differ widely from your view is that QDate/QDateTime are in 
the same category as QString/QByteArray. The latter classes are designed to be 
upgrades from C-style character arrays for storing bytes of data. So I view the 
QString/QByteArray classes much closer to a fundamental data type than what 
QDate/QDateTime represent. So I view QDate/QDateTime living at a higher level.

> Again, it depends on what you're trying to do.
> 
> From my point of view of QtCore maintainer, I want QDateTime, QString and
> QByteArray to be entirely locale-agnostic

I understand what you're saying, but I'd argue that the whole concept of dates 
and times is inherently locale specific, and that the general use case is that 
people expect dates & times to be formatted in their local format, not 
English/US. And as you've pointed out that since there are already ways to get 
RFC2822Date or ISODate with existing functions, I as the developer can select 
those when I know I want locale agnostic formatting for data exchange (which is 
clearly what I should have done in my own application).

Also, in this discussion we've had, we've focused exclusively on the behavior 
of QDate/QDateTime classes, which live in QtCore. If you make your change, what 
happens with QDateEdit/QDateTimeEdit in QtGUI? Right now, unless I'm 
overlooking something, QDateTimeEdit only has the following function for 
setting the display format:
  void QDateTimeEdit ::setDisplayFormat(const QString & format)
Which uses the same ddd, MM, etc. expressions we've previously been talking 
about to set the format, it doesn't use any of the QLocale::FormatType or 
Qt::DateFormat enums. If I'm on a German/Germany system and I run the following:

  ui->dateTimeEdit->setDisplayFormat("dddd dd.MM.yyyy HH:mm:ss.zzz");
  ui->dateTimeEdit->setDateTime(QDateTime::currentDateTime()); // widget now 
shows "Dienstag 01.12.2015 10:57:48.164"
  qDebug() << ui->dateTimeEdit->dateTime().toString("dddd dd.MM.yyyy 
HH:mm:ss.zzz "); // where QDateTime::toString() is now using your fix, 
QLocale::c()...

The debug statement would print out "Tuesday 01.12.2015 10:57:48.164". Well 
this certainly seems like unexpected behavior - in both spots I used the exact 
same formatting string and I got two different results... Unless you're saying 
that with your fix the widget would have also said "Tuesday 01.12.2015 
10:57:48.164" because QDateTimeEdit::setDateTime() would also use QLocale::c() 
to populate the widget? But again that seems very weird, my locale is 
German/Germany, so I'd expect to see the "dddd" portion represented as 
"Dienstag", not "Tuesday". Regardless of whether it's in a widget or written 
out to a file.

Sean
_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to