*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301 USA
*
* Authors: Richard Hult <richard@imendio.com>
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <glib/gi18n.h>
#include "empathy-time.h"
/* Note: EmpathyTime is always in UTC. */
-EmpathyTime
+time_t
empathy_time_get_current (void)
{
return time (NULL);
{
const gchar *timezone;
time_t t;
-
+
timezone = g_getenv ("TZ");
g_setenv ("TZ", "", TRUE);
/* The format is: "20021209T23:51:30" and is in UTC. 0 is returned on
* failure. The alternative format "20021209" is also accepted.
*/
-EmpathyTime
+time_t
empathy_time_parse (const gchar *str)
{
struct tm tm;
/* Converts the UTC timestamp to a string, also in UTC. Returns NULL on failure. */
gchar *
-empathy_time_to_string_utc (EmpathyTime t,
- const gchar *format)
+empathy_time_to_string_utc (time_t t,
+ const gchar *format)
{
gchar stamp[128];
struct tm *tm;
/* Converts the UTC timestamp to a string, in local time. Returns NULL on failure. */
gchar *
-empathy_time_to_string_local (EmpathyTime t,
- const gchar *format)
+empathy_time_to_string_local (time_t t,
+ const gchar *format)
{
gchar stamp[128];
struct tm *tm;
return g_strdup (stamp);
}
+gchar *
+empathy_time_to_string_relative (time_t then)
+{
+ time_t now;
+ gint seconds;
+
+ now = time (NULL);
+ seconds = now - then;
+
+ if (seconds > 0) {
+ if (seconds < 60) {
+ return g_strdup_printf (ngettext ("%d second ago",
+ "%d seconds ago", seconds), seconds);
+ }
+ else if (seconds < (60 * 60)) {
+ seconds /= 60;
+ return g_strdup_printf (ngettext ("%d minute ago",
+ "%d minutes ago", seconds), seconds);
+ }
+ else if (seconds < (60 * 60 * 24)) {
+ seconds /= 60 * 60;
+ return g_strdup_printf (ngettext ("%d hour ago",
+ "%d hours ago", seconds), seconds);
+ }
+ else if (seconds < (60 * 60 * 24 * 7)) {
+ seconds /= 60 * 60 * 24;
+ return g_strdup_printf (ngettext ("%d day ago",
+ "%d days ago", seconds), seconds);
+ }
+ else if (seconds < (60 * 60 * 24 * 30)) {
+ seconds /= 60 * 60 * 24 * 7;
+ return g_strdup_printf (ngettext ("%d week ago",
+ "%d weeks ago", seconds), seconds);
+ }
+ else {
+ seconds /= 60 * 60 * 24 * 30;
+ return g_strdup_printf (ngettext ("%d month ago",
+ "%d months ago", seconds), seconds);
+ }
+ }
+ else {
+ return g_strdup (_("in the future"));
+ }
+}