วิธีสร้าง Date Object ด้วยค่าใน java


96

ฉันต้องการวัตถุวันที่สำหรับวันที่ 2014-02-11 ฉันสร้างแบบนี้โดยตรงไม่ได้

Date myDate = new Date(2014, 02, 11);

ฉันก็ทำดังนี้

Calendar myCalendar = new GregorianCalendar(2014, 2, 11);
Date myDate = myCalendar.getTime();

มีวิธีง่ายๆในการสร้างวัตถุวันที่ใน java หรือไม่?


7
แนวทางของคุณไม่ง่ายอะไร
giorashc

3
"มีวิธีง่ายๆไหม". อะไรที่ทำให้คุณคิดว่าไม่ง่ายอย่างที่คิด เวลาและวันที่มีความซับซ้อนมากกว่าที่คุณคิด มีหลายปฏิทินและหลายเขตเวลา
Raedwald

5
บรรทัดเดียวเช่นDate myDate = new GregorianCalendar(2014, 2, 11).getTime();?
Elliott Frisch

2
ระวังการใช้ศูนย์นำหน้าในลิเทอรัลจำนวนเต็มดังที่เห็นในคำถาม02นี้ ใน Java หมายถึงเลขฐานแปด (ฐาน -8)แทนที่จะเป็นเลขฐานสิบ (ฐาน -10)
Basil Bourque

2
FYI, ลำบากชะมัดเก่าชั้นเรียนวันที่เวลาเช่นjava.util.Date, java.util.Calendarและjava.text.SimpleDateFormatตอนนี้มรดกแทนที่โดยjava.timeชั้นเรียนที่สร้างขึ้นใน Java 8 และต่อมา ดูการสอนโดยออราเคิล
Basil Bourque

คำตอบ:


111

Gotcha: การผ่าน 2 เป็นเดือนอาจทำให้คุณได้ผลลัพธ์ที่ไม่คาดคิด: ใน Calendar API เดือนจะอิงตามศูนย์ 2 หมายถึงเดือนมีนาคม

ฉันไม่รู้ว่าวิธี "ง่าย" ที่คุณกำลังมองหาคืออะไรเพราะฉันรู้สึกว่าการใช้ปฏิทินนั้นง่ายพออยู่แล้ว

อย่าลืมใช้ค่าคงที่สำหรับเดือน:

 Date date = new GregorianCalendar(2014, Calendar.FEBRUARY, 11).getTime();

อีกวิธีหนึ่งคือการใช้ DateFormat ซึ่งฉันมักจะมียูทิลิตี้เช่นนี้:

 public static Date parseDate(String date) {
     try {
         return new SimpleDateFormat("yyyy-MM-dd").parse(date);
     } catch (ParseException e) {
         return null;
     }
  }

เพื่อที่ฉันจะได้เขียน

Date myDate = parseDate("2014-02-14");

อีกทางเลือกหนึ่งที่ฉันชอบ: อย่าใช้ Java Date / Calendar อีกต่อไป เปลี่ยนเป็น JODA Time หรือ Java Time (aka JSR310 พร้อมใช้งานใน JDK 8+) คุณสามารถใช้LocalDateเพื่อแสดงวันที่ซึ่งสามารถสร้างได้อย่างง่ายดายโดย

LocalDate myDate =LocalDate.parse("2014-02-14");
// or
LocalDate myDate2 = new LocalDate(2014, 2, 14);
// or, in JDK 8+ Time
LocalDate myDate3 = LocalDate.of(2014, 2, 14);

1
.toTime()ไม่มีอยู่จริง ควรจะเป็น.getTime()(ดูเอกสาร Java )
0xJoKe

ขออภัยพิมพ์ผิด แม้ว่าฉันคิดว่า OP รู้วิธีการโทรที่ถูกต้องแล้ว: P
Adrian Shum

ค่อนข้างมั่นใจว่าคุณพูดถูก แต่สำหรับคน (เช่นฉัน) ที่ต้องมองทุกครั้งที่จำเป็นมันน่ารำคาญ ขอบคุณที่แก้ไข :)
0xJoKe

1
return new SimpleDateFormat("yyyy-mm-dd").parse(date) ควรจะเป็นreturn new SimpleDateFormat("yyyy-MM-dd").parse(date)
aks

จับดี. Dunno ทำไมฉันถึงทำผิดพลาด แก้ไข
Adrian Shum

36

tl; dr

LocalDate.of( 2014 , 2 , 11 )

หากคุณยืนยันที่จะใช้java.util.Dateคลาสเก่าที่น่ากลัวให้แปลงจากคลาสjava.time ที่ทันสมัย

java.util.Date                        // Terrible old legacy class, avoid using. Represents a moment in UTC. 
.from(                                // New conversion method added to old classes for converting between legacy classes and modern classes.
    LocalDate                         // Represents a date-only value, without time-of-day and without time zone.
    .of( 2014 , 2 , 11 )              // Specify year-month-day. Notice sane counting, unlike legacy classes: 2014 means year 2014, 1-12 for Jan-Dec.
    .atStartOfDay(                    // Let java.time determine first moment of the day. May *not* start at 00:00:00 because of anomalies such as Daylight Saving Time (DST).
        ZoneId.of( "Africa/Tunis" )   // Specify time zone as `Continent/Region`, never the 3-4 letter pseudo-zones like `PST`, `EST`, or `IST`. 
    )                                 // Returns a `ZonedDateTime`.
    .toInstant()                      // Adjust from zone to UTC. Returns a `Instant` object, always in UTC by definition.
)                                     // Returns a legacy `java.util.Date` object. Beware of possible data-loss as any microseconds or nanoseconds in the `Instant` are truncated to milliseconds in this `Date` object.   

รายละเอียด

หากคุณต้องการ "ง่าย" คุณควรใช้แพ็คเกจ java.timeใหม่ใน Java 8 แทนที่จะเป็นคลาส java.util.Date & .Calendar ที่มีปัญหาฉาวโฉ่ที่มาพร้อมกับ Java

java.time

java.timeกรอบที่สร้างขึ้นใน Java 8 และต่อมา supplants ลำบากเรียน java.util.Date/.Calendar เก่า

วันที่เท่านั้น

ป้อนคำอธิบายภาพที่นี่

LocalDateชั้นถูกนำเสนอโดย java.time เพื่อแสดงค่าวันเท่านั้นโดยไม่ต้องมีช่วงเวลาของวันหรือเขตเวลา คุณต้องมีเขตเวลาเพื่อกำหนดวันที่เนื่องจากวันใหม่เริ่มต้นในปารีสเร็วกว่าในมอนทรีออล ZoneIdระดับสำหรับโซนเวลา

ZoneId zoneId = ZoneId.of( "Asia/Singapore" );
LocalDate today = LocalDate.now( zoneId );

ถ่ายโอนไปยังคอนโซล:

System.out.println ( "today: " + today + " in zone: " + zoneId );

วันนี้: 2015-11-26 ในโซน: เอเชีย / สิงคโปร์

หรือใช้วิธีโรงงานระบุปีเดือนวัน.

LocalDate localDate = LocalDate.of( 2014 , Month.FEBRUARY , 11 );

localDate: 2014-02-11

หรือผ่านเดือนที่ 1-12 แทนที่จะเป็นDayOfWeekวัตถุ enum

LocalDate localDate = LocalDate.of( 2014 , 2 , 11 );

เขตเวลา

ป้อนคำอธิบายภาพที่นี่

A LocalDateไม่มีความหมายที่แท้จริงจนกว่าคุณจะปรับเป็นเขตเวลา ใน java.time เราใช้เขตเวลาเพื่อสร้างZonedDateTimeวัตถุ นั่นหมายถึงช่วงเวลาของวันด้วย แต่กี่โมง? มักจะเหมาะสมกับช่วงเวลาแรกของวัน คุณอาจคิดว่านั่นหมายถึงเวลา00:00:00.000แต่ไม่จริงเสมอไปเพราะเวลาออมแสง (DST) และความผิดปกติอื่น ๆ แทนที่จะสมมติว่าเวลาที่เราถาม java.time atStartOfDayในการกำหนดช่วงเวลาที่แรกของวันโดยการเรียก

ระบุชื่อโซนเวลาที่เหมาะสมในรูปแบบของcontinent/regionเช่นAmerica/Montreal, หรือAfrica/Casablanca Pacific/Aucklandอย่าใช้อักษรย่อ 3-4 ตัวเช่นESTหรือISTเนื่องจากไม่ใช่เขตเวลาจริงไม่เป็นมาตรฐานและไม่ซ้ำกัน (!)

ZoneId zoneId = ZoneId.of( "Asia/Singapore" );
ZonedDateTime zdt = localDate.atStartOfDay( zoneId );

zdt: 2014-02-11T00: 00 + 08: 00 [เอเชีย / สิงคโปร์]

UTC

ป้อนคำอธิบายภาพที่นี่

สำหรับงานส่วนหลัง (ตรรกะทางธุรกิจฐานข้อมูลการจัดเก็บข้อมูลและการแลกเปลี่ยน) เรามักใช้เขตเวลาUTC ใน java.time Instantคลาสจะแสดงช่วงเวลาบนไทม์ไลน์ใน UTC วัตถุทันทีสามารถสกัดได้จาก ZonedDateTime toInstantโดยการเรียก

Instant instant = zdt.toInstant();

ทันที: 2014-02-10T16: 00: 00Z

แปลง

คุณควรหลีกเลี่ยงการใช้java.util.Dateคลาสโดยสิ้นเชิง แต่ถ้าคุณต้องทำงานร่วมกับโค้ดเก่าที่ยังไม่ได้อัปเดตสำหรับjava.timeคุณสามารถแปลงกลับไปกลับมาได้ มองหาวิธีการแปลงใหม่ที่เพิ่มเข้ามาในคลาสเก่า

java.util.Date d = java.util.from( instant ) ;

…และ…

Instant instant = d.toInstant() ;

ตารางประเภทวันที่ - เวลาทั้งหมดใน Java ทั้งแบบสมัยใหม่และแบบดั้งเดิม


เกี่ยวกับjava.time

java.timeกรอบถูกสร้างขึ้นใน Java 8 และต่อมา ชั้นเรียนเหล่านี้แย่งลำบากเก่ามรดกเรียนวันที่เวลาเช่นjava.util.Date, และCalendarSimpleDateFormat

ต้องการเรียนรู้เพิ่มเติมโปรดดูที่ออราเคิลกวดวิชา และค้นหา Stack Overflow สำหรับตัวอย่างและคำอธิบายมากมาย สเปกJSR 310

โครงการJoda-Timeขณะนี้อยู่ในโหมดการบำรุงรักษาแนะนำให้ย้ายไปที่คลาสjava.time

คุณสามารถแลกเปลี่ยนวัตถุjava.timeโดยตรงกับฐานข้อมูลของคุณ ใช้ไดรเวอร์ JDBC ที่สอดคล้องกับJDBC 4.2หรือใหม่กว่า ไม่ต้องมีสตริงไม่ต้องมีjava.sql.*คลาส Hibernate 5 & JPA 2.2 สนับสนุนjava.time

จะหาคลาส java.time ได้ที่ไหน?

  • Java SE 8 , Java SE 9 , Java SE 10 , Java SE 11และใหม่กว่า - เป็นส่วนหนึ่งของ Java API มาตรฐานพร้อมการใช้งานแบบรวม
    • Java 9นำเสนอคุณสมบัติและการแก้ไขเล็กน้อย
  • Java SE 6และ Java SE 7
    • ส่วนใหญ่ของjava.timeการทำงานจะกลับรังเพลิง Java 6 และ 7 ในThreeTen-ย้ายกลับ
  • Android
    • การใช้งานบันเดิล Android (26+) เวอร์ชันที่ใหม่กว่าของคลาสjava.time
    • สำหรับ Android รุ่นก่อนหน้า (<26) กระบวนการที่เรียกว่าAPI desugaringจะนำส่วนย่อยของฟังก์ชันjava.time ที่ไม่ได้สร้างไว้ใน Android

อัปเดต: ขณะนี้ไลบรารีJoda-Timeอยู่ในโหมดการบำรุงรักษาและแนะนำการย้ายข้อมูลไปยังคลาสjava.time ฉันจะออกจากส่วนนี้สำหรับประวัติศาสตร์

Joda-Time

สำหรับสิ่งหนึ่งที่ Joda เวลาใช้เลขที่เหมาะสมเพื่อกุมภาพันธ์เป็นไม่ได้2 1อีกประการหนึ่ง Joda-Time DateTime รู้เขตเวลาที่กำหนดอย่างแท้จริงซึ่งแตกต่างจาก java.util.Date ซึ่งดูเหมือนจะมีเขตเวลา แต่ไม่มี

และอย่าลืมเขตเวลา มิฉะนั้นคุณจะได้รับค่าเริ่มต้นของ JVM

DateTimeZone timeZone = DateTimeZone.forID( "Asia/Singapore" );
DateTime dateTimeSingapore = new DateTime( 2014, 2, 11, 0, 0, timeZone );
DateTime dateTimeUtc = dateTimeSingapore.withZone( DateTimeZone.UTC );

java.util.Locale locale = new java.util.Locale( "ms", "SG" ); // Language: Bahasa Melayu (?). Country: Singapore.
String output = DateTimeFormat.forStyle( "FF" ).withLocale( locale ).print( dateTimeSingapore );

ทิ้งไปที่คอนโซล ...

System.out.println( "dateTimeSingapore: " + dateTimeSingapore );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "output: " + output );

เมื่อเรียกใช้ ...

dateTimeSingapore: 2014-02-11T00:00:00.000+08:00
dateTimeUtc: 2014-02-10T16:00:00.000Z
output: Selasa, 2014 Februari 11 00:00:00 SGT

การแปลง

หากคุณต้องการแปลงเป็น java.util.Date เพื่อใช้กับคลาสอื่น ๆ ...

java.util.Date date = dateTimeSingapore.toDate();

4
แค่ความคิดเห็นเดียว. การใช้เลขศูนย์นำหน้าในช่องเช่นnew DateTime( 2014, 02, 11, 0, 0, timeZone );อาจไม่เป็นที่ต้องการ แม้ว่าจะใช้งานได้ในกรณีนี้ แต่จะไม่รวบรวมในเดือนสิงหาคมและกันยายนหากคุณผ่านไป08และ09เป็นการนำเสนอ int literal ด้วย 0 หมายถึงงานนำเสนอฐานแปด มันจะให้ค่าที่คุณคาดไม่ถึงเมื่อหลายปีก่อน1000เช่นnew DateTime( 0100, 02, 01, 0, 0, timeZone );ใคร ๆ ก็คาดหวังว่ามันจะเป็น 100AD แต่จริงๆแล้วมันคือ 64AD
Adrian Shum

@AdrianShum Yikes! ฉันไม่เคยรู้เลยว่าการพิมพ์ผิดเล็ก ๆ น้อย ๆ ที่ไร้เดียงสาเช่นศูนย์นำหน้าบนตัวอักษรจำนวนเต็มอาจมีผลข้างเคียงที่น่ารังเกียจเช่นนี้ ขอบคุณ.
Basil Bourque

2
เรียน Down-Voter แสดงความคิดเห็นพร้อมกับการโหวตของคุณ
Basil Bourque

"หากคุณยืนยันที่จะใช้คลาส java.util.Date เก่าที่น่ากลัว" ผู้ให้บริการหลายรายไม่เสนอเซิร์ฟเวอร์ tomcat ที่ทำงานบน Java เกิน JDK7 ดังนั้นในขณะที่ฉันต้องการใช้สิ่งที่ใหม่กว่า แต่บางคนก็ติดอยู่ที่อึเก่าเพราะผู้อื่น .....
KimvdLinde

@KimvdLinde อ่านคำตอบของฉันอย่างระมัดระวังมากขึ้น ดูที่หัวกระสุน ค้นหาคำว่า“ Java SE 6 และ Java SE 7”
Basil Bourque

15

ฉันคิดว่าวิธีที่ดีที่สุดคือการใช้SimpleDateFormatวัตถุ

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2014-02-11";
Date dateObject = sdf.parse(dateString); // Handle the ParseException here

Y .. และอย่าลืมใช้ YYYY - ใช้ yyyy - โดยเฉพาะอย่างยิ่งถ้าทำสิ่งนี้ในทางกลับกันด้วยรูปแบบแทนที่จะแยกวิเคราะห์ คุณได้ผลลัพธ์แปลก ๆ !!! ดูที่นี่: code.sololearn.com/c0EYUAOc92uQ/#java
JGFMK


2

ลองทำตามนี้

 Calendar cal = Calendar.getInstance();
    Date todayDate = new Date();
    cal.setTime(todayDate);

    // Set time fields to zero
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    todayDate = cal.getTime();

1
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm:ss", Locale.ENGLISH);
//format as u want

try {
    String dateStart = "June 14 2018 16:02:37";
    cal.setTime(sdf.parse(dateStart));
    //all done
} catch (ParseException e) {
    e.printStackTrace();
}

ความเลวร้ายCalendarและSimpleDateFormatคลาสถูกแทนที่เมื่อหลายปีก่อนโดยคลาสjava.time การแนะนำให้ใช้ในปี 2018 เป็นคำแนะนำที่ไม่ดี
Basil Bourque

คำตอบนี้ไม่ได้กล่าวถึงเฉพาะของคำถามนี้
Basil Bourque

1
ตาม "ระดับ API" ฉันถือว่าคุณหมายถึง Android แต่นี่ไม่ใช่คำถามเฉพาะ Android นอกจากนี้ส่วนใหญ่ของjava.timeการทำงานจะกลับรังเพลิง Java 6 และ 7 ในThreeTen-ย้ายกลับโครงการ ปรับให้เข้ากับ Android เพิ่มเติมในโครงการThreeTenABP ดังนั้นไม่จำเป็นต้องใช้คลาสวันที่และเวลาดั้งเดิมที่น่ากลัวเหล่านั้น java.timeชั้นเรียนที่ดีขึ้นอย่างรุนแรง
Basil Bourque

ขอบคุณสำหรับความคิดเห็นนี้ห้องสมุดนี้มีฟังก์ชันเช่นความแตกต่างของวันที่และความแตกต่างของเวลาหรือไม่
Syed Danish Haider

1
ใช่. ค้นหา Stack Overflow สำหรับคำถาม & คำตอบที่มีอยู่มากมายในหัวข้อนี้ และดูโครงการThreeTen-Extraด้วย (ไม่ได้สำรองข้อมูลไปยัง Android รุ่นแรก ๆ )
Basil Bourque

0

วิธีที่ง่ายที่สุด:

Date date = Date.valueOf("2000-1-1");
LocalDate localdate = LocalDate.of(2000,1,1);
LocalDateTime localDateTime = LocalDateTime.of(2000,1,1,0,0);

ควรหลีกเลี่ยงjava.sql.Dateคลาสแรกเนื่องจากคลาสที่คุณใช้อยู่ได้รับการออกแบบมาไม่ดีและล้าสมัยไปนาน ฉันแนะนำให้ใช้LocalDateเป็นบรรทัดที่สอง นิสัยของฉันคือLocalDate.of(2000, Month.JANUARY, 1)ฉันคิดว่ามันชัดเจนกว่าที่จะอ่าน
Ole VV

และนั่นเป็นเพราะคำตอบมีการประกาศ LocalDate ไม่เพียง แต่ถามวัตถุ Date (ไม่เลิกใช้และใช้ในบางครั้ง) ...
Adam Silenko

-1
import java.io.*;
import java.util.*;
import java.util.HashMap;

public class Solution 
{

    public static void main(String[] args)
    {
        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(1,"SUNDAY");
        hm.put(2,"MONDAY");
        hm.put(3,"TUESDAY");
        hm.put(4,"WEDNESDAY");
        hm.put(5,"THURSDAY");
        hm.put(6,"FRIDAY");
        hm.put(7,"SATURDAY");
        Scanner in = new Scanner(System.in);
        String month = in.next();
        String day = in.next();
        String year = in.next();

        String format = year + "/" + month + "/" + day;
        Date date = null;
        try
        {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
            date = formatter.parse(format);
        }
        catch(Exception e){
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(hm.get(dayOfWeek));
    }
}

สามารถใช้รูปแบบ SimpleDateFormat เพื่อจัดรูปแบบ Date ตามเราได้ แล้วแยกวิเคราะห์ภายในวัตถุวันที่ โปรแกรมด้านบนแสดงวิธีรับวันในสัปดาห์โดยระบุวันที่ใด ๆ
Ankush

-5

ฉันคิดว่าวันที่ของคุณมาจาก php และเขียนเป็น html (dom) หรือ? ฉันมีฟังก์ชัน php เพื่อเตรียมวันที่และการประทับเวลาทั้งหมด สิ่งนี้ส่งคืนรูปแบบที่จำเป็น

$timeForJS = timeop($datetimeFromDatabase['payedon'], 'js', 'local'); // save 10/12/2016 09:20 on var

รูปแบบนี้สามารถใช้กับ js เพื่อสร้าง Date ใหม่ ...

<html>
   <span id="test" data-date="<?php echo $timeForJS; ?>"></span>
   <script>var myDate = new Date( $('#test').attr('data-date') );</script>
</html>

สิ่งที่ฉันจะพูดคือทำหน้าที่ของคุณเองเพื่อห่อหุ้มที่ทำให้ชีวิตของคุณง่ายขึ้น คุณสามารถใช้ func ของฉันเป็นตัวอย่างได้ แต่รวมอยู่ใน cms ของฉันคุณไม่สามารถคัดลอกและวางได้ 1 ถึง 1 รายการ :)

    function timeop($utcTime, $for, $tz_output = 'system')
{
    // echo "<br>Current time ( UTC ): ".$wwm->timeop('now', 'db', 'system');
    // echo "<br>Current time (USER): ".$wwm->timeop('now', 'db', 'local');
    // echo "<br>Current time (USER): ".$wwm->timeop('now', 'D d M Y H:i:s', 'local');
    // echo "<br>Current time with user lang (USER): ".$wwm->timeop('now', 'datetimes', 'local');

    // echo '<br><br>Calculator test is users timezone difference != 0! Tested with "2014-06-27 07:46:09"<br>';
    // echo "<br>Old time (USER -> UTC): ".$wwm->timeop('2014-06-27 07:46:09', 'db', 'system');
    // echo "<br>Old time (UTC -> USER): ".$wwm->timeop('2014-06-27 07:46:09', 'db', 'local');

    /** -- */
    // echo '<br><br>a Time from db if same with user time?<br>';
    // echo "<br>db-time (2019-06-27 07:46:09) time left = ".$wwm->timeleft('2019-06-27 07:46:09', 'max');
    // echo "<br>db-time (2014-06-27 07:46:09) time left = ".$wwm->timeleft('2014-06-27 07:46:09', 'max', 'txt');

    /** -- */
    // echo '<br><br>Calculator test with other formats<br>';
    // echo "<br>2014/06/27 07:46:09: ".$wwm->ntimeop('2014/06/27 07:46:09', 'db', 'system');

    switch($tz_output){
        case 'system':
            $tz = 'UTC';
            break;

        case 'local':
            $tz = $_SESSION['wwm']['sett']['tz'];
            break;

        default:
            $tz = $tz_output;
            break;
    }

    $date = new DateTime($utcTime,  new DateTimeZone($tz));

    if( $tz != 'UTC' ) // Only time converted into different time zone
    {
        // now check at first the difference in seconds
        $offset = $this->tz_offset($tz);
        if( $offset != 0 ){
            $calc = ( $offset >= 0  ) ? 'add' : 'sub';
            // $calc = ( ($_SESSION['wwm']['sett']['tzdiff'] >= 0 AND $tz_output == 'user') OR ($_SESSION['wwm']['sett']['tzdiff'] <= 0 AND $tz_output == 'local') ) ? 'sub' : 'add';
            $offset = ['math' => $calc, 'diff' => abs($offset)];
            $date->$offset['math']( new DateInterval('PT'.$offset['diff'].'S') ); // php >= 5.3 use add() or sub()
        }
    }

    // create a individual output
    switch( $for ){
        case 'js':
            $format = 'm/d/Y H:i'; // Timepicker use only this format m/d/Y H:i without seconds // Sett automatical seconds default to 00
            break;
        case 'js:s':
            $format = 'm/d/Y H:i:s'; // Timepicker use only this format m/d/Y H:i:s with Seconds
            break;
        case 'db':
            $format = 'Y-m-d H:i:s'; // Database use only this format Y-m-d H:i:s
            break;
        case 'date':
        case 'datetime':
        case 'datetimes':
            $format = wwmSystem::$languages[$_SESSION['wwm']['sett']['isolang']][$for.'_format']; // language spezific output
            break;
        default:
            $format = $for;
            break;
    }

    $output = $date->format( $format );

    /** Replacement
     * 
     * D = day short name
     * l = day long name
     * F = month long name
     * M = month short name
     */
    $output = str_replace([
        $date->format('D'),
        $date->format('l'),
        $date->format('F'),
        $date->format('M')
    ],[
        $this->trans('date', $date->format('D')),
        $this->trans('date', $date->format('l')),
        $this->trans('date', $date->format('F')),
        $this->trans('date', $date->format('M'))
    ], $output);

    return $output; // $output->getTimestamp();
}

2
เหตุใดคุณจึงตอบคำถามJavaอายุ 2 ปีพร้อมคำตอบเป็น PHP
Alan Hay
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.