ParseApplication/ExternalLibs/Parse-SDK-Android/Parse/src/main/java/com/parse/ParseDateFormat.java

57 lines
1.5 KiB
Java

/*
* Copyright (c) 2015-present, Parse, LLC.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.parse;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.SimpleTimeZone;
/**
* This is the currently used date format. It is precise to the millisecond.
*/
/* package */ class ParseDateFormat {
private static final String TAG = "ParseDateFormat";
private static final ParseDateFormat INSTANCE = new ParseDateFormat();
public static ParseDateFormat getInstance() {
return INSTANCE;
}
// SimpleDateFormat isn't inherently thread-safe
private final Object lock = new Object();
private final DateFormat dateFormat;
private ParseDateFormat() {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(new SimpleTimeZone(0, "GMT"));
dateFormat = format;
}
/* package */ Date parse(String dateString) {
synchronized (lock) {
try {
return dateFormat.parse(dateString);
} catch (java.text.ParseException e) {
// Should never happen
PLog.e(TAG, "could not parse date: " + dateString, e);
return null;
}
}
}
/* package */ String format(Date date) {
synchronized (lock) {
return dateFormat.format(date);
}
}
}